WinForm程序在一个循环中长时间处理的时候,用Application.DoEvents();处理Windows消息,如何判断用户关闭程序以退出循环?

ooolinux 2018-03-18 05:49:15
WinForm程序在一个循环中长时间处理的时候,用Application.DoEvents();处理Windows消息,如何判断用户关闭程序以退出循环?
...全文
653 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
ooolinux 2018-06-19
  • 打赏
  • 举报
回复
引用 11 楼 caozhy 的回复:
closing里面操作一个bool变量 循环里面判断,如果是,break
还是需要自定义一个变量了?
threenewbee 2018-06-18
  • 打赏
  • 举报
回复
closing里面操作一个bool变量 循环里面判断,如果是,break
  • 打赏
  • 举报
回复
事件驱动跟线程没有直接关系。例如为一个按钮绑定click事件处理
private void button1_Click(object sender, EventArgs e)
{
    timer1.Interval = 1000;
    var 计数 = 0;
    timer1.Tick += (s, arg) =>
    {
        this.label1.Text = 计数.ToString();
        计数++;
    };
    timer1.Start();
}
它启动定时操作,持续地改写 Label1 的文本。当关闭窗口时,也就自动停止了。不用纠结任何东西。 在事件处理方法中递归去处理其它事件处理方法,特别是当你有2个以上的这类 DoEvents 相互沦陷调用的时候,那很容就看到灾难了。
ooolinux 2018-06-18
  • 打赏
  • 举报
回复
ooolinux 2018-06-18
  • 打赏
  • 举报
回复
引用 9 楼 sp1234 的回复:
事件驱动跟线程没有直接关系。例如为一个按钮绑定click事件处理
private void button1_Click(object sender, EventArgs e)
{
    timer1.Interval = 1000;
    var 计数 = 0;
    timer1.Tick += (s, arg) =>
    {
        this.label1.Text = 计数.ToString();
        计数++;
    };
    timer1.Start();
}
它启动定时操作,持续地改写 Label1 的文本。当关闭窗口时,也就自动停止了。不用纠结任何东西。 在事件处理方法中递归去处理其它事件处理方法,特别是当你有2个以上的这类 DoEvents 相互沦陷调用的时候,那很容就看到灾难了。
好的
ooolinux 2018-03-20
  • 打赏
  • 举报
回复
引用 5 楼 xian_wwq 的回复:
长时间运行的处理 感觉应该放到单独线程中去, 数据处理与UI通过委托来交互 这样和Application.DoEvents()就没有什么必然关联
实用是这样,不过我现在是写一点练习小程序,单线程比较简单。
xian_wwq 2018-03-20
  • 打赏
  • 举报
回复
长时间运行的处理 感觉应该放到单独线程中去, 数据处理与UI通过委托来交互 这样和Application.DoEvents()就没有什么必然关联
ooolinux 2018-03-18
  • 打赏
  • 举报
回复
@daixf_csdn @xuzuning 好的,谢谢~ Delphi有个Application.Terminated属性,当ProcessMessages方法(相当于DoEvents)收到消息WM_QUIT时,Terminated属性将被置为True,循环中就可以判断Application.Terminated属性以退出循环。 WinForm程序只能自定义标志变量,没有一个类似的对象属性吗?
xuzuning 2018-03-18
  • 打赏
  • 举报
回复
DoEvents 是让你的程序去处理一下系统消息,仅此而已 至于是否要响应 户关闭程序,取决于你是否订阅了该事件 如果订阅了,该事件的响应程序就可能被执行,如果没有 DoEvents,则事件响应程序不会被执行 当然,这是指你的程序长时间霸占cpu的情况
圣殿骑士18 2018-03-18
  • 打赏
  • 举报
回复
Form的Closing事件中,写人一个窗体级别变量 循环中判断这个变量

110,561

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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