C# 异步线程调用UI线程方法详解
在C#中,可以使用以下方法将异步线程调用UI线程:
- 使用Control.Invoke方法
使用Control.Invoke方法可以将委托在UI线程上同步执行。例如:
private void button1_Click(object sender, EventArgs e)
{
// 创建一个异步线程
Thread t = new Thread(new ThreadStart(DoWork));
t.Start();
}
private void DoWork()
{
// 执行一些耗时操作
// 在UI线程上更新UI
this.Invoke(new Action(() =>
{
label1.Text = '完成';
}));
}
- 使用Control.BeginInvoke方法
使用Control.BeginInvoke方法可以在UI线程上异步执行委托。例如:
private void button1_Click(object sender, EventArgs e)
{
// 创建一个异步线程
Thread t = new Thread(new ThreadStart(DoWork));
t.Start();
}
private void DoWork()
{
// 执行一些耗时操作
// 在UI线程上异步更新UI
this.BeginInvoke(new Action(() =>
{
label1.Text = '完成';
}));
}
无论是使用Control.Invoke还是Control.BeginInvoke,都可以保证异步线程可以调用UI线程。但是,需要注意的是,如果在UI线程上执行的操作比较耗时,使用Control.Invoke可能会导致UI线程阻塞。在这种情况下,可以考虑使用Control.BeginInvoke来异步更新UI。
原文地址: https://www.cveoy.top/t/topic/mFDB 著作权归作者所有。请勿转载和采集!