我在.NET 4上开发了一个简单的Windows应用程序。 我想将参数传递给我的应用程序,如果此参数为空,则应用程序不应继续运行并退出。
我在main方法中添加了一个输入参数。它在我的Visual Studio中调试它时工作正常但是当我直接执行我的应用程序时Windows给了我这个错误:
“申请已停止工作”
我该如何处理?我测试了一些代码,但它不起作用
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
答案 0 :(得分:4)
我希望你使用你提供的代码。调用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());
}
Count()
只会在数组上使用Length
。虽然细节不多。
答案 1 :(得分:2)
我不明白上述代码的原因。
如果此参数为空,则应用程序不会继续运行 退出工作。
您可以轻松地以这种方式编码
[STAThread]
static void Main(string[] args)
{
if(args.Length > 0)
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
}