sps*_*pli 12 c# multithreading action invoke
嗨,我看到以下代码:
void UpdateMessage (string message)
{
Action action = () => txtMessage.Text = message;
this.Invoke (action);
}
Run Code Online (Sandbox Code Playgroud)
为什么使用Action然后在这里调用动作?为什么不只是txtMessage.Text = message用来替换函数体中的代码?
更新
在评论中提供的更完整版本的代码,下面再现了语法高亮,缩进等.
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
new Thread(Work).Start();
}
void Work()
{
Thread.Sleep(5000);
UpdateMessage("My Garden");
}
void UpdateMessage(string message) {
Action action = () => textBox1.Text = message;
this.Invoke(action);
}
}
Run Code Online (Sandbox Code Playgroud)
Ste*_*cya 12
如果从另一个线程调用UpdateMessage,则需要调用主线程以与GUI元素交互
如果您使用,txtMessage.Text = message您将获得CrossThreadOperationException
| 归档时间: |
|
| 查看次数: |
338 次 |
| 最近记录: |