4
|
JYelton Melchior Blausand · 技术社区 · 14 年前 |
1
3
不是真的,但也不会疼。
狡猾的通常不会,但如果关闭链中的某些代码调用application.doEvents(),我不会排除这种可能性。总是一个好主意,以防御方式编程您的计时器处理程序。
FormClosing是有条件的,它的主要功能是显示“先保存?”盒子或类似的。我会把所有东西都放在FormClosed中,除非它确实需要更早(即它需要其他组件/控件处于活动状态)。 |
2
4
好吧,您已经回答了您自己的问题:)像FormClosing和Timer'sTick事件这样的事件都在一个线程上运行。计时器无法“打断”线程并运行勾选事件,您的线程正忙于执行清理工作。在线程完成运行事件处理程序并重新进入消息循环后再次空闲之前,Tick事件不会运行。 但在这种情况发生之前,表单将自行销毁,并处理其所有控件和组件。这就结束了计时器计时事件运行的任何机会。不需要显式地停止()。 对于System.Timers.Timer或其他异步组件(如BackgroundWorker),情况并非如此。它是 非常 重要的是在表格关闭前停止这些操作。如果您不这样做,那么您的代码通常会轰炸一个ObjectDisposedException。尤其是System.Timers.Timer是 非常 很难停止,它可以在用户关闭窗体前一微秒调度调用经过的事件处理程序的线程。当这种情况发生的时候。不要使用它。 |
JOO · 使用udpClient从多个IP地址连续接收数据 2 年前 |
Futterkiste · 函数比例图 2 年前 |
user18789895 · 我应该如何验证WinForms应用程序? 2 年前 |
beriscen · 如何使整个链接标签区域可点击? 2 年前 |
lpmaxim · 当鼠标光标悬停在按钮上时,背景图像会移动 2 年前 |