如何使用Application.线程退出在非windowsforms应用程序?(多线程应用,需要用事件检查主线程)
本文关键字:线程 应用 事件 检查 多线程 退出 Application 何使用 应用程序 windowsforms | 更新日期: 2023-09-27 18:13:57
我的应用程序需要知道主线程何时结束,我发现Application.ThreadExit
处理程序。然而我不知道如何使用它。所有的例子都是Application.ThreadExit += new EventHandler(AppEvents.OnThreadExit);
。但这是针对Windows窗体的,我的应用程序是一个控制台应用程序。谢谢你!
在控制台中,我总是使用SetConsoleCtrlHandler
委托,带有DllImport
在类声明之后,使用:
private delegate bool ConsoleEventDelegate(int eventType);
[DllImport("kernel32.dll", SetLastError = true)]
private static extern bool SetConsoleCtrlHandler(ConsoleEventDelegate callback, bool add);
然后在program中设置处理程序:
var handler = new ConsoleEventDelegate(ConsoleEventCallback);
SetConsoleCtrlHandler(handler, true);
static bool ConsoleEventCallback(int eventType)
{
if (eventType == 2)
{
//Main thread Console is being closed!
// handle other threads
}
Thread.Sleep(5000);
return false;
}
您也可以为控制台编写如下代码:-
Application.ThreadExit += new EventHandler(OnThreadExit);
将订阅事件,这意味着每当线程退出时,它将调用OnThreadExit
方法,如下所示:-
public static void OnThreadExit(object sender, EventArgs e)
{
Console.WriteLine("thread is shutting down.");
}