WPF关闭应用程序方法

很多人认为关闭应用程序应该很简单,例如WindowsForm里一个Application.Exit();方法就可以解决问题,但在WPF里面可别滥用,因为WPF里Application类没有该方法,倒是有一个Exit的事件驱动,在WPF应用程序里面关闭程序讲究很多:

在WPF应用程序的关闭是有ShutdownMode属性设置,具有3中枚举类型的值:

1)OnLastWindowClose 应用程序最后一个窗体关闭时关闭应用程序

2)OnMainWindowClose 应用程序主窗体关闭时关闭应用程序

3)OnExplicitShutdown   显示调用关闭

在OnExplicitShutdown模式下必须显示调用Application实例的ShutDown方法

例如:Application.Current.Shutdown(-1);这里Application.Current返回当前应用程序的当前Application实例。

注意以上不适应XBAP,XBAP在浏览器关闭时自动关闭。

需求:需要在许多子窗体中关闭整个程序(WPF)

winform实现:Application.Exit();

WPF实现:

App.xaml文件:

代码

<Application x:Class="pc.App"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    StartupUri="Windows1.xaml" ShutdownMode="OnExplicitShutdown">

Windows1.xaml文件(部分):

<Button Margin="37,0,15,15" Style="{DynamicResource btn_Exit}" Content="Button" Grid.Column="2" Grid.Row="3" Height="41" VerticalAlignment="Bottom" Width="100" x:Name="btn_Exits" Click="btn_Exits_Click" />

Windows1.xaml.cs文件(部分):

private void btn_Exits_Click(object sender, RoutedEventArgs e)
        {
            Application.Current.Shutdown();
            
        }

十分简单!此后只需在按钮事件中加入Application.Current.Shutdown(),即可退出程序

另外,还有一种强制终止应用程序进程的方法

Environment.Exit(0)可以立即中断程序执行并退出

这个方法用起来的感觉类似在任务管理器里找到进程并终止,即立刻关闭进程,不管该进程目前有没有工作,在做什么工作。

在WPF中调用该方法即立即退出,不会等待当前工作完成。

时间: 2024-10-21 20:46:24

WPF关闭应用程序方法的相关文章

android彻底关闭应用程序方法

Android SDK > 7(Android2.1)之后,即Android2.2及以后版本彻底关闭应用的方法,目前试验只有一下方法有效: Intent startMain = new Intent(Intent.ACTION_MAIN); startMain.addCategory(Intent.CATEGORY_HOME); startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(startMain); Process

Macbook怎么强制关闭后台程序?Macbook强制关闭后台程序的方法

有时候我们的Macbook电脑运行某个程序卡在那里耗了很长时间,程序本身有可能提供了取消按钮,点了也没有反应,这时候我们就很想强制关闭它了,那么Macbook怎么强制关闭后台运行的程序呢?下面完美小编就给大家带来几种关于Macbook怎么关闭后台程序的方法. 1.方法1: 我觉得最好得办法,按下快捷键:Command+Option+Esc来打开"强制退出应用程序"的窗口,然后选中你需要退出的程序,再点右下方的"强制退出"即可. 2.方法2: 如果你非常确定你正处于当

WPF获取应用程序路径方法,获取程序运行路径方法

试了好多种方法,在WPF中获取工程的路径都没能解决掉,暂时用的绝对路径"D://WPF.....",但是发布的时候出现问题了,放到别的电脑上找不到路径,又开始了地毯式搜索,终于解决了,跟遇到此类问题的朋友分享下解决办法,如下: AppDomain.CurrentDomain.BaseDirectory +文件名即可,简单吧? //获取启动了应用程序的可执行文件的路径,不包括可执行文件的名称. string str5=Application.StartupPath; //可获得当前执行的

WPF关闭应用汇总

原文:WPF关闭应用汇总 就本人而言,C#中关闭应用主要有以下途径: 1.Close():关闭当前窗口,可以在OnClosing和 OnClosed中捕获消息,在OnClosing的时候,可以取消关闭窗口 2.Application.Current.Shutdown()/App.Current.Shutdown(): 关闭当前程序,如果有其他线程没有结束,不会关闭 3.Environment.Exit(0):强制退出,即使有其他的线程没有结束 4.Process类的CloseMainWindow

Windows编程 - 开启/关闭/遍历程序的类 代码(C++)

开启/关闭/遍历程序的类 代码(C++) 本文地址: http://blog.csdn.net/caroline_wendy 类包含4个函数, 启动程序, 遍历所有进程, 关闭程序, 遍历进程依赖的动态链接库. 示例: Image.exe是预先生成的可执行程序(exe), 启动程序, 间隔5秒, 关闭程序. 使用方法参加测试程序. 代码: /* * process.h * * Created on: 2014.06.08 * Author: Spike */ /*vs 2012*/ #ifnde

C#-WinForm-跨窗体 构造函数传值 及应用—登录式窗口传值、如何关闭主页面时关闭应用程序、如何打开唯一窗口—★★★★★五星重量级

构造函数可以传任意类型的值,并可以同时传多个值 结构函数传值的初步应用--简单的登陆式界面 现在我有两个窗体Form3和Form4,如下,如何点击Form3中的按钮后,打开Form4并将Form3中的textbox中的值传给Form4的label? 1.点击Form3中的按钮打开Form4 2.获取Form3中的值 3.传值给Form4中的label 一.获取Form3中textbox1的值 button1的点击事件: namespace 记事本 { public partial class F

【解决】应用程序无法正常启动(0xc000007b)。请单击“确定”关闭应用程序。

换了SSD硬盘,装了Windows 7 SP1 x64的系统.用了一段时间,突然一天有些软件打不开了.弹出下面的提示 应用程序无法正常启动(0xc000007b).请单击“确定”关闭应用程序.第一时间马上百度搜索.百度上的回答的解决方法我都尝试了几遍,还是不行!不是Directx的问题,也不是缺少dll文件.实在找不到办法. 问题没有得到解决!我就尝试在bing.com上面搜索看看,看见一个解决方法,尝试了一下,结果还真的就给解决了!下面是解决问题的具体操作: SFC检查系统完整性来尝试修复丢失

C# 强制关闭当前程序进程(完全Kill掉不留痕迹)

C#代码   /// <summary> /// 运行DOS命令 /// DOS关闭进程命令(ntsd -c q -p PID )PID为进程的ID /// </summary> /// <param name="command"></param> /// <returns></returns> public static string RunCmd(string command) { //實例一個Process類

WPF入门教程系列(二) 深入剖析WPF Binding的使用方法

WPF入门教程系列(二) 深入剖析WPF Binding的使用方法 同一个对象(特指System.Windows.DependencyObject的子类)的同一种属性(特指DependencyProperty)只能拥有一个binding. 这一点可以通过设置binding对象的方法名得知: public static BindingExpressionBase SetBinding( DependencyObject target, DependencyProperty dp, BindingB