问题是:
有两个线程,一个ui线程(主线程),一个socket接收线程,在socket接收线程上接收到一条命令后弹出一个窗体(monitorForm),我调用monitorForm.invoke(new EventHandle(handleProcess)),在handleProcess方法中调用monitorForm.showDailog().按理说invoke是跳转到ui线程上的,上面所说的monitorForm.showDialog()应该阻塞ui线程,但也阻塞了socket接收线程,请高手指点……。
有两个线程,一个ui线程(主线程),一个socket接收线程,在socket接收线程上接收到一条命令后弹出一个窗体(monitorForm),我调用monitorForm.invoke(new EventHandle(handleProcess)),在handleProcess方法中调用monitorForm.showDailog().按理说invoke是跳转到ui线程上的,上面所说的monitorForm.showDialog()应该阻塞ui线程,但也阻塞了socket接收线程,请高手指点……。
private void OpenForm()
{
this.Invoke((MethodInvoker)delegate
{
monitorForm.showDailog();
});
}
在socket 线程中调用 OpenForm()
可以试试
你可以考虑用SendMessage,然后在monitorForm中,重载WndProc,拦截自定义消息(0x400以后的可用)。弹出内容。
大哥,我用了你说的方法,可结果是一样的,这是windows mobile 上的程序,写个log文件都会将线程阻塞。
http://www.cnblogs.com/arongbest/archive/2009/05/06/1450467.html
你的mobile程序可以自己处理消息?