我有一个异步套接字客户端,当数据包到达时,我需要通过打开一个新表单来处理它。
但是,因为它在一个线程中,新表单挂起并且没有响应。
如何从异步回调创建和打开新表单?
答案 0 :(得分:1)
使用Dispatcher,从后台切换到UI线程。
//This has to be done on the UI-Thread, before calling the async method
var dispatcher = Dispatcher.CurrentDispatcher;
//Now, in your async callback, do something like this
private void AsyncCallback(IAsyncResult result){
dispatcher.Invoke(new Action(() =>
{
//Create your form Here
}
}
如果您希望后台线程等到创建并显示表单,请使用Invoke(),否则,使用Begin