在线程中关闭窗口的问题

txwdyyy001 2011-03-07 05:10:16
用ShowDialog()打开一个窗口,窗口中启动一个线程,在线程中调用关闭这个窗口的方法会报异常,AbortExpation。关闭窗口方法如下

//在线程中关闭窗口
public void myFormClose()
{
this.Invoke(new DeMsgSignShow(MsgSignShow));
}
private delegate void DeMsgSignShow();
private void MsgSignShow()
{
//this.Close();
this.DialogResult = DialogResult.OK;
}

虽然用了try但是在有些手机里还是会出现程序退出的情况。不过有些手机没事。
是我的这个关闭窗口的方法有问题么?请大家指教。
...全文
222 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
wade008 2011-03-11
  • 打赏
  • 举报
回复
不要在线程关闭,让窗口去关闭

定义个委托和事件就可以了
txwdyyy001 2011-03-10
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 91program 的回复:]
最好是发消息到窗口,然后由窗口来完成关闭的过程
[/Quote]
调用this.close()就相当于是发送消息给窗口了吧?
txwdyyy001 2011-03-10
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 jiangyongtao 的回复:]
有问题,不要在非页面线程中操作页面元素。
可以在线程中取得该窗体的句柄,然后用PostMessage发送WM_CLOSE消息关闭指定窗体。
[/Quote]
C#如何PostMessage?
91program 2011-03-10
  • 打赏
  • 举报
回复
最好是发消息到窗口,然后由窗口来完成关闭的过程
blue601 2011-03-09
  • 打赏
  • 举报
回复
this.Invoke(new DeMsgSignShow(MsgSignShow));
改成
BeginInvoke
我的送神 2011-03-08
  • 打赏
  • 举报
回复
关闭窗口不要放在子线程,方在主线程中。。。。
世外涛缘 2011-03-07
  • 打赏
  • 举报
回复
有问题,不要在非页面线程中操作页面元素。
可以在线程中取得该窗体的句柄,然后用PostMessage发送WM_CLOSE消息关闭指定窗体。

7,655

社区成员

发帖
与我相关
我的任务
社区描述
Windows Phone是微软发布的一款手机操作系统,它将微软旗下的Xbox LIVE游戏、Zune音乐与独特的视频体验整合至手机中。
社区管理员
  • Windows客户端开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧