在Linux和Windows Forms应用程序中实现多线程的方法略有不同
在Linux上使用C#和Mono时,可以使用System.Threading
命名空间中的Thread
类或Task
类来实现多线程。以下是一个简单的示例:
using System;
using System.Threading;
namespace MultiThreadingExample
{
class Program
{
static void Main(string[] args)
{
// 创建一个新线程并执行方法
Thread newThread = new Thread(DoWork);
newThread.Start();
// 在主线程中执行其他操作
for (int i = 0; i < 5; i++)
{
Console.WriteLine("Main thread: " + i);
Thread.Sleep(1000);
}
}
static void DoWork()
{
for (int i = 0; i < 5; i++)
{
Console.WriteLine("Worker thread: " + i);
Thread.Sleep(1000);
}
}
}
}
或者使用Task
类:
using System;
using System.Threading.Tasks;
namespace MultiThreadingExample
{
class Program
{
static void Main(string[] args)
{
// 创建一个新任务并执行方法
Task task = Task.Run(DoWork);
// 在主线程中执行其他操作
for (int i = 0; i < 5; i++)
{
Console.WriteLine("Main thread: " + i);
Thread.Sleep(1000);
}
// 等待任务完成
task.Wait();
}
static void DoWork()
{
for (int i = 0; i < 5; i++)
{
Console.WriteLine("Worker thread: " + i);
Thread.Sleep(1000);
}
}
}
}
在Windows Forms应用程序中,可以使用System.Threading
命名空间中的Thread
类或Task
类来实现多线程。以下是一个简单的示例:
使用Thread
类:
using System;
using System.Threading;
using System.Windows.Forms;
namespace MultiThreadingExample
{
public class MyForm : Form
{
private Button button;
public MyForm()
{
button = new Button();
button.Text = "Start";
button.Click += Button_Click;
this.Controls.Add(button);
}
private void Button_Click(object sender, EventArgs e)
{
// 创建一个新线程并执行方法
Thread newThread = new Thread(DoWork);
newThread.Start();
}
static void DoWork()
{
for (int i = 0; i < 5; i++)
{
Console.WriteLine("Worker thread: " + i);
Thread.Sleep(1000);
}
}
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new MyForm());
}
}
}
或者使用Task
类:
using System;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace MultiThreadingExample
{
public class MyForm : Form
{
private Button button;
public MyForm()
{
button = new Button();
button.Text = "Start";
button.Click += Button_Click;
this.Controls.Add(button);
}
private void Button_Click(object sender, EventArgs e)
{
// 创建一个新任务并执行方法
Task task = Task.Run(DoWork);
}
static void DoWork()
{
for (int i = 0; i < 5; i++)
{
Console.WriteLine("Worker thread: " + i);
Thread.Sleep(1000);
}
}
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new MyForm());
}
}
}
在这两个示例中,我们创建了一个简单的Windows Forms应用程序,其中包含一个按钮。当用户单击按钮时,将创建一个新线程(或任务)并执行DoWork
方法。在DoWork
方法中,我们简单地打印一些消息并暂停一秒钟。请注意,这些示例适用于C#和Mono在Linux上的运行。