C# 控制台应用程序内部的跨线程调用(从另一个线程关闭控制台)
我在线程中有一个Notify图标,该图标有一个带有“Close”选项的contextMenu,但我无法从那里关闭控制台 使用此代码仅关闭Notify图标,而不关闭控制台:C# 控制台应用程序内部的跨线程调用(从另一个线程关闭控制台),c#,multithreading,.net-4.0,console-application,C#,Multithreading,.net 4.0,Console Application,我在线程中有一个Notify图标,该图标有一个带有“Close”选项的contextMenu,但我无法从那里关闭控制台 使用此代码仅关闭Notify图标,而不关闭控制台: public void mnuExit_Click(object sender, EventArgs e) { notificationIcon.Dispose(); notifyThread.Abort(); timerThread.Abort();
public void mnuExit_Click(object sender, EventArgs e)
{
notificationIcon.Dispose();
notifyThread.Abort();
timerThread.Abort();
Application.Exit();
}
我尝试过这个,但是控制台中没有“调用”
this.Invoke((Action)delegate
{
Application.Exit();
});
编辑
我正在使用线程在系统托盘中创建notifyIcon,因为这是唯一的方法,没有其他方法。
notifyIcon有一个名为“退出”的选项。
Exit event方法只关闭notifyIcon,但我也想关闭Console窗口
即使我只是让应用程序退出()
在mnuExit\u单击,只有notify图标关闭
My program.cs具有以下代码行以保持控制台打开:
System.Threading.Thread.Sleep(System.Threading.Timeout.Infinite);
也许这就是问题所在。。。不确定。(但我需要这个)为什么不尝试定义自己的事件呢。您可以在主线程中订阅它,当它被触发时,您可以在事件处理程序中关闭应用程序,为什么不尝试定义自己的事件呢。您可以在主线程中订阅它,当它被触发时,您可以在事件处理程序中关闭应用程序您是否在应用程序中创建任何表单?如何打开控制台/表单?(Application.Exit照它说的做,因此当应用程序退出时,应用程序的systray图标自然会消失。您真正想要的是只关闭窗体/控制台,而不是关闭整个应用程序-因此您应该保留一些对控制台/窗体的对象引用,以便能够在不退出应用程序的情况下关闭它。)Application.Exit()只能执行某些操作以退出线程,它不会关闭控制台窗口。Exit()是一个更大的锤子。它只是一个控制台窗口,带有一个带有上下文菜单的notify图标。上下文菜单项“退出”应该关闭所有内容。@HansPassant我只是尝试使用Environment.exit(0)代码>但同样的情况也会发生,只显示图标,但控制台仍然打开。您是否在应用程序中创建表单?如何打开控制台/表单?(Application.Exit照它说的做,因此当应用程序退出时,应用程序的systray图标自然会消失。您真正想要的是只关闭窗体/控制台,而不是关闭整个应用程序-因此您应该保留一些对控制台/窗体的对象引用,以便能够在不退出应用程序的情况下关闭它。)Application.Exit()只能执行某些操作以退出线程,它不会关闭控制台窗口。Exit()是一个更大的锤子。它只是一个控制台窗口,带有一个带有上下文菜单的notify图标。上下文菜单项“退出”应该关闭所有内容。@HansPassant我只是尝试使用Environment.exit(0)代码>但同样的情况也会发生,只显示图标,但控制台仍然打开。