退出应用程序错误

本文关键字:错误 应用程序 退出 | 更新日期: 2023-09-27 17:50:36

我用。net 4开发了一个简单的windows应用程序。我想传递一个参数给我的应用程序,如果这个参数为空,应用程序不应该继续运行并退出。

我在main方法中添加了一个输入参数。当我在Visual Studio中调试它时,它工作得很好,但当我直接执行应用程序时,Windows给了我这个错误:

"application has stopped working"

我该如何处理?我测试了一些代码,但它不工作

 Application.ExitThread();
 Application.Exit();

这是我们的主要方法:

 [STAThread]
 static void Main(string[] args)
 {
     if(args.Count()==0)
      Thread.CurrentThread.Abort(); 
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        Application.Run(new Form1());
 }

我查看了Windows事件查看器,发现了这个错误事件

Application: WindowsFormsApplication1.exe
Framework Version: v4.0.30319
Description: The process was terminated due to an unhandled exception.
Exception Info: System.Threading.ThreadAbortException
Stack:
at System.Threading.Thread.AbortInternal()
at System.Threading.Thread.Abort()
at WindowsFormsApplication1.Program.Main()

和另一个问题:

Faulting application name: WindowsFormsApplication1.exe, version: 1.0.0.0, time 
stamp:    0x50e775e3
Faulting module name: KERNELBASE.dll, version: 6.1.7601.17514, time stamp: 0x4ce7c78c
Exception code: 0xe0434352
Fault offset: 0x000000000000a49d
Faulting process id: 0x15b4
Faulting application start time: 0x01cdeade1bdab018
Faulting application path: C:'WindowsFormsApplication1'WindowsFormsApplication1 
 'bin'Debug'WindowsFormsApplication1.exe
Faulting module path: C:'Windows'system32'KERNELBASE.dll
Report Id: 5a6d1a1f-56d1-11e2-8ffd-20cf30e7bd24

退出应用程序错误

我希望使用您提供的代码。调用Thread.Abort()会在线程(ThreadAbortException)上引发一个异常,该异常将被取消捕获。

如果你只想停止不带参数的处理,只需返回:

[STAThread]
 static void Main(string[] args)
 {
     if(args.Length ==0) return; // Will leave and end the application
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        Application.Run(new Form1());
 }

Length将简单地做时,您也在数组上使用Count()。这是一个小细节

我不明白你上面的代码的原因。

如果此参数为空,应用程序将无法继续运行退出工作。

你可以很容易地这样编码

 [STAThread]
 static void Main(string[] args)
 {
     if(args.Length > 0)
     {
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        Application.Run(new Form1());
     }
 }