阅读量:0
在C# WinForm中实现多线程操作,可以使用C#中提供的Thread
类或Task
类来创建和管理多线程。以下是一个简单的示例:
- 使用
Thread
类创建多线程:
using System; using System.Threading; using System.Windows.Forms; namespace MultiThreadExample { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void btnStart_Click(object sender, EventArgs e) { Thread thread = new Thread(new ThreadStart(DoWork)); thread.Start(); } private void DoWork() { // 执行耗时操作 for (int i = 0; i < 5; i++) { // 模拟耗时操作 Thread.Sleep(1000); // 更新UI UpdateUI(i.ToString()); } } private void UpdateUI(string text) { if (textBox1.InvokeRequired) { textBox1.Invoke(new Action<string>(UpdateUI), text); } else { textBox1.Text = text; } } } }
- 使用
Task
类创建多线程:
using System; using System.Threading.Tasks; using System.Windows.Forms; namespace MultiThreadExample { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void btnStart_Click(object sender, EventArgs e) { Task.Run(() => DoWork()); } private void DoWork() { // 执行耗时操作 for (int i = 0; i < 5; i++) { // 模拟耗时操作 System.Threading.Thread.Sleep(1000); // 更新UI UpdateUI(i.ToString()); } } private void UpdateUI(string text) { if (textBox1.InvokeRequired) { textBox1.Invoke(new Action<string>(UpdateUI), text); } else { textBox1.Text = text; } } } }
上面的示例演示了如何在C# WinForm中使用多线程来执行耗时操作并更新UI。需要注意的是,在更新UI时需要判断是否需要Invoke操作来保证线程安全。