用ShowDialog()打开一个窗口,窗口中启动一个线程,在线程中调用关闭这个窗口的方法会报异常,AbortExpation。关闭窗口方法如下
- C# code
//在线程中关闭窗口 public void myFormClose() { this.Invoke(new DeMsgSignShow(MsgSignShow)); } private delegate void DeMsgSignShow(); private void MsgSignShow() { //this.Close(); this.DialogResult = DialogResult.OK; }
虽然用了try但是在有些手机里还是会出现程序退出的情况。不过有些手机没事。
是我的这个关闭窗口的方法有问题么?请大家指教。
------解决方案--------------------
有问题,不要在非页面线程中操作页面元素。
可以在线程中取得该窗体的句柄,然后用PostMessage发送WM_CLOSE消息关闭指定窗体。
------解决方案--------------------
关闭窗口不要放在子线程,方在主线程中。。。。
------解决方案--------------------
this.Invoke(new DeMsgSignShow(MsgSignShow));
改成
BeginInvoke
------解决方案--------------------
最好是发消息到窗口,然后由窗口来完成关闭的过程