- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我的基于 GUI 桌面的 WPF 4.0 (C# .Net 4.0) 程序与 SQL Server 数据库一起工作。每次我运行我的应用程序时,它都会通过 ADO.NET Entity Framework 创建与 SQL Server 的连接,如果无法访问 SQL Server,它会抛出异常并显示 MessageBox
和通知。
现在我希望在用户阅读此消息后应用程序将关闭。我找到了三种方法来做到这一点:
Process.GetCurrentProcess().Kill();
或
this.Shutdown(); // Application.Current.Shutdown()
或
System.Environment.Exit(0);
所有这些都工作正常并且可以满足我的需要——关闭应用程序并在 Windows 任务管理器中终止应用程序的进程。
我想知道:
Application.Current.Shutdown()
和this.Shutdown()
关闭应用的方式一样吗?或者也许有另一种更合适的方法来关闭 WPF GUI 应用程序?
Application.Exit()
对我不起作用,因为我收到错误:
The event '
System.Windows.Application.Exit
' can only appear on the left-hand side of += or -=
谢谢。
最佳答案
Application.Current.Shutdown()
是关闭应用程序的正确方法。通常,因为它会触发退出事件,您可以处理,further info .
Process.GetCurrentProcess().Kill()
应该在您想要尽快终止应用程序时使用,further info .
这些方法的性质完全不同:
Shutdown()
可以暂停以结束一些操作Kill()
强制应用程序尽快关闭Kill()
可能是最快的方法,但这有点像内核 panic 。
关于c# - 关闭 WPF GUI 应用程序的正确方法 : GetCurrentProcess(). Kill()、Environment.Exit(0) 或 this.Shutdown(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3880836/
已关闭。此问题需要 debugging details 。目前不接受答案。 编辑问题以包含 desired behavior, a specific problem or error, and the
当我的应用程序调用 System.Diagnostics.Process.GetCurrentProcess() 时,它会抛出此错误并使我的应用程序崩溃:未注册的 icall ‘System.Diag
在c#中我们可以通过在Windows中使用这个方法获取当前用户进程id Process.GetCurrentProcess().SessionId; 我们如何在 C++ 中做到这一点。 最佳答案 调用
TerminateProcess 的文档部分说: This function stops execution of all threads within the process and request
我正在尝试获取我的 C# 应用程序主窗体的窗口句柄 (HWND)(该应用程序只有 1 个窗体)。 互联网上的一些解决方案表明我可以使用: Process.GetCurrentProcess().Mai
在这个小程序中,为什么GetCurrentProcess()返回-1? int _tmain(int argc, _TCHAR* argv[]) { HANDLE h = GetCurrent
我正在使用 CGEventTapCreateForPSN 来捕获和过滤我的应用程序的 key 。我对拦截其他应用程序的事件不感兴趣。我很确定事件点击对于我的目的来说太过严厉,但我一直无法找到更好的方法
我正在使用 Xcode 将 nodejs 作为静态库链接到 OS X 10.4 上的简单 c++ 程序,但我一直在努力解决以下错误: Undefined symbols for architectur
我可以从 Process.GetCurrentProcess().Threads 获取正在运行的线程列表,但我需要知道以 Thread.Start 开始的线程的托管名称。但它不是 ProcessThr
我似乎对以下调用的工作方式有点困惑: string str = Process.GetCurrentProcess().MainModule.ModuleName; 我知道这与执行以下操作相同: Pr
例如,参见 How to get the current ProcessID? 没有人愿意为 System.Diagnostics.Process.GetCurrentProcess() 返回的对象调
现在,当用户想要退出我的应用程序时,我必须执行一些操作(即与服务器断开连接、保存用户数据...),然后执行以下操作: 使用 bool 值退出所有主循环 中止仍在运行的线程(通常是我的服务器轮询线程)
我正在做这样的事情.. Task.Factory.StartNew(() =>{ Parallel.ForEach(list, new ParallelOptions { MaxDegreeO
我正在寻找一种简单且难以捉摸的方法来终止我的 C++ 应用程序的 Mac 端口。在我使用的 Windows 中 TerminateProcess(GetCurrentProcess, 0); 我可以在
我的基于 GUI 桌面的 WPF 4.0 (C# .Net 4.0) 程序与 SQL Server 数据库一起工作。每次我运行我的应用程序时,它都会通过 ADO.NET Entity Framewor
我是一名优秀的程序员,十分优秀!