Application.ThreadException 的参考页面说
因为这是一个静态事件,所以在处理应用程序时必须分离事件处理程序,否则会导致内存泄漏.
尽管该页面上的示例代码没有分离事件处理程序,但如果事件处理程序未分离,它是否真的会泄漏?
似乎应该分离处理程序的唯一时间是应用程序关闭.在这种情况下,无论处理程序是否已分离,应用程序使用的所有内存都将被释放?
它可能非常罕见,但WinForms应用程序的Main()方法可能由于某种原因看起来像这样:
static bool AbortStartup { get; set; }
[STAThread]
public static void Main()
{
Application.Run(new CancelableSplashScreen());
if (!AbortStartup)
Application.Run(new MainWindow());
}
Run Code Online (Sandbox Code Playgroud)
当启动屏幕关闭时,将显示主窗口,除非启动屏幕将AbortStatup属性设置为true.如果您Application.ThreadException在启动屏幕中添加了一个事件处理程序,那么CancelableSplashScreen在应用程序终止之前,实例将不会被垃圾收集,这可能需要相当长的时间.
| 归档时间: |
|
| 查看次数: |
620 次 |
| 最近记录: |