相关疑难解决方法(0)

如何在C#控制台应用程序中捕获ctrl-c(SIGINT)

我希望能够在C#控制台应用程序中捕获CTRL+ C,以便我可以在退出之前执行一些清理.这样做的最佳方式是什么?

.net c# console

211
推荐指数
7
解决办法
11万
查看次数

.NET控制台应用程序退出事件

在.NET中,是否有一种方法(如事件)用于检测控制台应用程序何时退出?我需要清理一些线程和COM对象.

我正在从控制台应用程序运行一个没有表单的消息循环.我正在使用的DCOM组件似乎要求应用程序泵消息.

我已经尝试向Process.GetCurrentProcess.Exited和Process.GetCurrentProcess.Disposed添加一个处理程序.

我还尝试向Application.ApplicationExit和Application.ThreadExit事件添加处理程序,但它们没有触发.也许那是因为我没有使用表格.

.net complexity-theory console-application

67
推荐指数
4
解决办法
9万
查看次数

控制台应用程序的"退出"

我正在寻找一种方法来在手动关闭控制台应用程序时触发一段代码(用户关闭窗口).一直在尝试:

AppDomain.CurrentDomain.ProcessExit +=
    new EventHandler(CurrentDomain_ProcessExit);
Run Code Online (Sandbox Code Playgroud)

但如果手动关闭,上述操作无效.

有没有办法使用.Net调用或我是否需要导入内核DLL并以这种方式执行?

.net c#

66
推荐指数
2
解决办法
9万
查看次数

如何在程序退出之前运行代码?

我有一个像C#这样的控制台程序

Class Program 
{ 
    static void main(string args[]) 
    {
    }
}
Run Code Online (Sandbox Code Playgroud)

现在我想在main()退出后做一些事情.我试图为类程序编写一个解构函数,但它永远不会被击中.

有人知道怎么做.

非常感谢

c# exit

53
推荐指数
1
解决办法
8万
查看次数

为什么关闭以AllocConsole启动的控制台会导致我的整个应用程序退出?我可以改变这种行为吗?

我想要发生的事情是控制台窗口消失了,或者更好,但它是隐藏的,但我希望我的应用程序继续运行.那可能吗?我希望能够使用Console.WriteLine并将控制台用作输出窗口.我希望能够隐藏和显示它,并且我不希望整个应用程序因为控制台关闭而死亡.

编辑

码:

internal class SomeClass {

    [DllImport("kernel32")]
    private static extern bool AllocConsole();

    private static void Main() {
        AllocConsole();
        while(true) continue;
    }
}
Run Code Online (Sandbox Code Playgroud)

编辑2

我根据这个问题的评论中的建议尝试了这里接受的解决方案[ Capture console exit C# ].示例代码的错误在于DLLImport需要是"kernel32.dll"或"kernel32",而不是"Kernel32".进行更改后,当我单击控制台窗口上的X时,我正在向CTRL_CLOSE_EVENT的处理程序发送消息.但是,调用FreeConsole和/或返回true并不会阻止应用程序终止.

.net c# console winapi console-application

27
推荐指数
3
解决办法
9749
查看次数

如何在visual studio控制台应用程序中禁用控制台窗口的关闭按钮?

我需要禁用用C#编写的visual studio控制台应用程序的控制台窗口中的关闭按钮.我希望应用程序运行直到它完成,用户不能通过关闭控制台窗口来停止它.我正在使用visual studio 2010

.net c# console

15
推荐指数
1
解决办法
1万
查看次数

在控制台关闭运行代码?

我正在编写一个C#应用程序,需要在控制台关闭时上传文件(通过X按钮,或者计算机关闭).

我怎么能这样做?

AppDomain.CurrentDomain.ProcessExit += new EventHandler (OnExit);
Run Code Online (Sandbox Code Playgroud)

仅在我exit向控制台发出命令时运行,而不是在我按下红色关闭按钮时运行.

请仅在解决方案通过X按钮关闭控制台时运行解决方案,并且当计算机关闭时(通常通过Windows,我知道如果电源被拉到xD则不能).

c# sharpdevelop .net-4.0

8
推荐指数
1
解决办法
7703
查看次数

需要知道申请何时结束

有没有办法监视使用该DLL的应用程序何时关闭?DLL和应用程序都是C#,Windows Forms也不是.

我可以检查主应用程序什么时候关闭,但我想让DLL看到"嘿程序正在关闭并释放我,我应该在我死之前快速做到这一点".

有办法吗?或者我不知道应用菜单"在你死之前做这个"?

c# dll resources

7
推荐指数
1
解决办法
6270
查看次数

挂钩SetConsoleCtrlHandler时没有堆栈跟踪的NullReferenceException

使用代码从这个线程挂钩控制台关闭事件,我有时得到一个NullReferenceException没有堆栈跟踪(大多数时候我没有).它发生在发布和调试中,并且"抛出异常时中断"没有帮助(它中断,但堆栈跟踪仍为空).当我正常退出我的应用程序时(我正在点击进入并因此释放a Console.ReadLine),我从未得到此异常.应用程序事件日志有2个条目:

应用程序:MyApp.exe Framework版本:v4.0.30319描述:由于未处理的异常,进程已终止.异常信息:System.NullReferenceException Stack:

和:

故障应用程序名称:Gateway.exe,版本:1.0.0.0,时间戳:0x4e284101故障模块名称:未知,版本:0.0.0.0,时间戳:0x00000000异常代码:0xc0000005故障偏移:0x004d41ce故障进程id:0xf00故障应用程序启动时间:0x01cc47b827e19a6e错误应用程序路径:C:\ dev\MyApp.exe错误模块路径:未知报告ID:689c1caa-b3ab-11e0-ba1b-00247e777f12

谷歌已经发现了一些漏洞问题SetConsoleCtrlHandler,所以我不知道这是否是一个败仗.

c# console hook

7
推荐指数
1
解决办法
2320
查看次数

Application.ApplicationExit事件是否可以在非Winforms应用程序中通知退出?

当应用程序退出时,需要通知我们的代码库.所以我们订阅了System.Window.Forms.Application.ApplicationExit事件.这适用于Winforms应用程序,但它是否也适用于其他类型的应用程序,如控制台应用程序,服务和Web应用程序(如ASP.NET)?命名空间会表明它没有,并且可能在Application.Exit()被调用时(明确地或隐含地)被提升,这可能不适合调用这些其他情况.

还有一些其他事件在这些其他情况下会更好,或者更普遍吗(如果它适用于Winforms也很好)?例如,是否有一个关于何时Environment.Exit()被调用的事件(控制台应用程序)?

我在System.Diagnostic.Process中发现了一个Exited事件,但这似乎是为了监视另一个进程的退出,并且它似乎没有被进程接收到它自己(例如,Process.GetCurrentProcess().Exited += Process_Exited; Process.GetCurrentProcess().EnableRaisingEvents = true;).我认为它可能只是在该过程实际退出后才会提出,所以这不起作用.

这尤其适用于.NET 2.0和C#.

events console-application exit exit-handler .net-2.0

5
推荐指数
1
解决办法
4367
查看次数