Luk*_* S. 8 .net c# multithreading winforms
我搜索了很多,但我似乎无法找到与我的具体问题有关的任何内容.
我希望能够从另一个类(SocketListener)更新我的MainUI表单,并且我有一个处理网络的线程(clientThread).现在我可以从网络线程运行简单的输出,例如写入调试器输出和创建MessageBox.
但我真正想做的是能够调用clientThread中的代码,该代码将在我的MainUI实例上执行操作.我怎样才能做到这一点?
此外,如果有人想要代码的特定部分,那么我可以发布它,以帮助您更好地理解我的要求.
最好的祝福!
小智 17
检查InvokeRequired
中的Control
类,并且如果这是真的,然后调用Invoke
和传递,你想要给客户端的线程上做一个委托(通常是匿名方法).
例:
public void DoWork(Form form)
{
if (form.InvokeRequired)
{
// We're on a thread other than the GUI thread
form.Invoke(new MethodInvoker(() => DoWork(form)));
return;
}
// Do what you need to do to the form here
form.Text = "Foo";
}
Run Code Online (Sandbox Code Playgroud)