1

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

4

1 回答 1

0

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

我会在该方法的开头放置一些代码来关闭/完成后台线程。而 aAutoResetEvent或 aManualResetEvent将是一个很好的方法。

于 2012-11-05T08:32:26.513 回答