在c#windows应用程序中应用程序退出甚至不启动

在c#windows应用程序中应用程序退出甚至不启动,c#,C#,我正在使用下面的类隐藏和显示windows任务栏。 我正在给这个班打电话,如下所示 问题:启动应用程序时,任务栏完全隐藏。 但是当我通过停止调试退出应用程序时,任务栏是 没有出现。我的意思是应用程序出口没有在我的代码中触发。 我需要这样一种方式,不管我以什么方式关闭我的应用程序,它都应该关闭 退出前最后显示tashbar() 请帮忙。谢谢 节目: 类别: 为什么不在调用Application.Run之后调用Taskbar.Show()?Application.Run将阻止,直到窗体关闭 您的

我正在使用下面的类隐藏和显示windows任务栏。 我正在给这个班打电话,如下所示

问题:启动应用程序时,任务栏完全隐藏。 但是当我通过停止调试退出应用程序时,任务栏是 没有出现。我的意思是应用程序出口没有在我的代码中触发。 我需要这样一种方式,不管我以什么方式关闭我的应用程序,它都应该关闭 退出前最后显示tashbar()

请帮忙。谢谢

节目:


类别:



为什么不在调用Application.Run之后调用Taskbar.Show()?Application.Run将阻止,直到窗体关闭

您的代码可能如下所示:

[STAThread]
static void Main()
{
    Taskbar.Hide();
    Form1 TargerForm = new Form1();
    Application.ApplicationExit += new EventHandler(Application_ApplicationExit);
    Application.EnableVisualStyles();
    Application.Run(TargerForm);
    Taskbar.Show();
}

为什么不在调用Application.Run之后调用Taskbar.Show()?Application.Run将阻止,直到窗体关闭

您的代码可能如下所示:

[STAThread]
static void Main()
{
    Taskbar.Hide();
    Form1 TargerForm = new Form1();
    Application.ApplicationExit += new EventHandler(Application_ApplicationExit);
    Application.EnableVisualStyles();
    Application.Run(TargerForm);
    Taskbar.Show();
}

当您停止调试时,这是程序的“粗鲁”退出,之后不会触发任何事件。微软自己的VisualStudio集成web浏览器也受到了这一问题的困扰。如果这对你来说是非常重要的,你可能想考虑在后台运行一些东西来处理这个清理,而不是在调试器的上下文中运行?


我不认为有什么方法可以捕获“停止调试”事件,但我希望被证明是错误的:)

当你停止调试时,这是程序的“粗鲁”退出,之后不会触发任何事件。微软自己的VisualStudio集成web浏览器也受到了这一问题的困扰。如果这对你来说是非常重要的,你可能想考虑在后台运行一些东西来处理这个清理,而不是在调试器的上下文中运行?


我不认为有办法捕获“停止调试”事件,但我希望被证明是错误的:)

@Dave Markle,这听起来很奇怪。应该有一些解决办法。我想是吧。为什么这是退出应用程序的粗鲁方式。我是否有其他良好的做法来停止正在运行的应用程序?谢谢。为什么不在你的表格上加一个退出按钮呢?然后在click事件处理程序调用ApplicationExit?@Jason Down中,我的应用程序正在线程上运行。这是一份背景工作。应用程序中没有表单。退出线程的唯一方法是在任务管理器中杀死它。谢谢,“TargerForm”到底应该做什么?您使用任务栏类的上下文是什么?我创建一个表单实例来启动应用程序。我将此窗体用作桌面上的任务栏。它只是一个任务栏,用于显示已打开的应用程序以及应用程序之间的交换。这就是我隐藏windows DeFast任务栏的原因,因为我有自己的任务栏,我不希望用户访问windows。我希望你这样做是有道理的。。。。谢谢。@Dave Markle,听起来像是干巴巴的。应该有一些解决办法。我想是吧。为什么这是退出应用程序的粗鲁方式。我是否有其他良好的做法来停止正在运行的应用程序?谢谢。为什么不在你的表格上加一个退出按钮呢?然后在click事件处理程序调用ApplicationExit?@Jason Down中,我的应用程序正在线程上运行。这是一份背景工作。应用程序中没有表单。退出线程的唯一方法是在任务管理器中杀死它。谢谢,“TargerForm”到底应该做什么?您使用任务栏类的上下文是什么?我创建一个表单实例来启动应用程序。我将此窗体用作桌面上的任务栏。它只是一个任务栏,用于显示已打开的应用程序以及应用程序之间的交换。这就是我隐藏windows DeFast任务栏的原因,因为我有自己的任务栏,我不希望用户访问windows。我希望你这样做是有道理的。。。。谢谢,你说“还是没有解决方案”是什么意思?Taskbar.Show()将在TargetForm完成运行时执行。想想看,有一行看起来很有趣的是App.Run行,它应该看起来像Application.Run(new TargetForm())你说的“仍然没有解决方案”是什么意思?Taskbar.Show()将在TargetForm完成运行时执行。想想看,其中一行看起来很有趣的是App.Run行,它应该看起来像Application.Run(newtargetform())
[STAThread]
static void Main()
{
    Taskbar.Hide();
    Form1 TargerForm = new Form1();
    Application.ApplicationExit += new EventHandler(Application_ApplicationExit);
    Application.EnableVisualStyles();
    Application.Run(TargerForm);
    Taskbar.Show();
}