在Console Application中调用Cross Thread(从另一个线程关闭控制台)

时间:2013-12-11 16:42:02

标签: c# multithreading .net-4.0 console-application

我在一个线程中有一个notifyIcon,该图标有一个带有“关闭”选项的contextMenu,但是我无法从那里关闭控制台......

使用此代码只关闭notifyIcon,而不是控制台:

    public void mnuExit_Click(object sender, EventArgs e)
    {
        notificationIcon.Dispose();
        notifyThread.Abort();
        timerThread.Abort();
        Application.Exit();
    }

我试过了,但控制台内没有“调用”。

        this.Invoke((Action)delegate 
        {
            Application.Exit();
        });

修改

我正在使用一个线程在systemTray中创建一个notifyIcon,因为这是唯一的方法,没有别的。 notifyIcon有一个名为“Exit”的选项。 Exit事件方法仅关闭notifyIcon,但我也想关闭控制台窗口。

即使我只是让Application.Exit();放在mnuExit_Click内,也只会关闭notifyIcon。

我的program.cs有这行代码来打开控制台:

System.Threading.Thread.Sleep(System.Threading.Timeout.Infinite);

也许这就是问题......不确定。 (但我需要这个)

1 个答案:

答案 0 :(得分:1)

为什么不尝试定义自己的事件。您可以在主线程中订阅它,当它被触发时,您可以在事件处理程序中关闭应用程序

相关问题