我正在构建一个应用程序,它需要能够通过回复每隔8秒发送一次保持活动的数据包来维持与服务器的连接。 此线程还应处理从服务器发送时发送的信息。 为此,我需要知道是否可能让后台线程触发一个事件,以使GUI线程用一个带有处理信息的对话框进行重写。
我遇到了麻烦,因为我当前的尝试会阻止后台线程,因此保持活动响应失败。
1
如果您需要更多详细信息,请与我们联系
答案 0 :(得分:0)
您需要确保您的GUI操作在GUI线程上完成。你通常使用Invoke
来做到这一点 - 周围有很多例子,但基本上它是这样的:
private delegate void MyDelegate(int param);
private void MyFunc(int aParam)
{
// Invoke is required if we aren't on the GUI thread
if (this.InvokeRequired)
{
// MyFunc will be called asynchronously on the
// GUI thread.
//
this.BeginInvoke(new MyDelegate(MyFunc),
new object[] {aParam});
return;
}
// We only get here if we're running on the GUI thread
// So we can put GUI ops here safely.
}