在c#中拦截应用程序关闭

时间:2009-05-03 23:34:09

标签: c# resource-cleanup

我想正确关闭一些套接字,并能够告诉服务器我们正在关闭,但如果应用程序已关闭,那么套接字全部关闭,有时文件被锁定。我的应用程序关闭后如何运行方法?

这将进入一个将在表单应用程序中使用的库。

4 个答案:

答案 0 :(得分:4)

如果是Windows窗体应用程序,您可以将焦点放在窗体上,单击属性窗口中的事件闪电,然后使用窗体关闭事件。

this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(OnFormClosing);

private void OnFormClosing(object sender, FormClosingEventArgs e)
{
    // Your socket logic here
}

此外,如果您需要拦截正在关闭的表单,请将Cancel属性设置为true:

e.Cancel = true;

答案 1 :(得分:1)

我会在使用这些资源的类上实现IDisposable。然后可以从应用程序类型支持的任何关闭方法(OnFormClose,OnStop,Application_End,...)显式调用Dispose。

答案 2 :(得分:0)

您在谈论WinForms应用吗?如果是这样,请使用主表单上的FormClosing event

答案 3 :(得分:0)

我不确定它是否是最适合它的地方,但你可以通过挂钩AppDomain.ProcessExit告诉你的过程正在结束。这对于清理来说很好,但我认为现在不是发送任何消息的好时机。 :)