Windows窗体中窗体销毁的成员组件

时间:2012-11-05 08:21:06

标签: c# winforms multithreading

我在C#/ Windows Forms中有一个项目,我有一个带有PictureBox的简单表单,我从后台线程中绘制图像。如果我在绘图处于活动状态时关闭表单,则后台线程在尝试执行调用以更新位图时会崩溃,这是非常合乎逻辑的。我尝试使用析构函数等待的AutoResetEvent,这样析构函数就不会返回,直到完成所有绘图并且后台线程知道它应该退出。但我得出结论,崩溃发生在析构函数执行之前所以我开始怀疑,表单的组件在什么时候被销毁?我假设在析构函数之前?那么等待绘图完成的安全场所是什么?覆盖Dispose()并在那里进行?

1 个答案:

答案 0 :(得分:0)

这就是我想的,在Designer文件中已经存在Dispose(bool disposing)方法,例如MainForm.Designer.cs

我会在该方法的开头放置一些代码来关闭/完成后台线程。 AutoResetEventManualResetEvent是一种很好的方式。