当前位置: 首页 > news >正文

WPF应用程序生存期以及相关事件

  •  WPF 应用程序的生存期会通过 Application 引发的几个事件来加以标记,相关事件对应着应用程序何时启动、激活、停用和关闭。

应用程序生存期事件

  • • 独立应用程序(传统风格的 Windows 应用程序,这些应用程序作为要安装到客户端计算机并从客户端计算机运行的可执行程序集来生成)和 XAML 浏览器应用程序 (XBAP)(由导航页组成的应用程序,这些应用程序作为可执行程序集生成并由Web 浏览器托管) 的生存期并非完全相同。

  • • 下图展示了独立应用程序生存期内的各个关键事件及其引发顺序。

 

 同样的,下图展示了 XAML 浏览器应用程序 (XBAP)生存期内的各个关键事件及其引发顺序。

 

创建WPF应用程序并验证生存期相关事件

  • • 在app.xmal中绑定相关事件以及启动设置Shutdown返回代码模式

 

// app.xanl 文件
// 绑定相关事件
<Application x:Class="WpfFirstApp.App"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:local="clr-namespace:WpfFirstApp"StartupUri="MainWindow.xaml"Startup="Application_Startup"Activated="Application_Activated"Deactivated="Application_Deactivated"DispatcherUnhandledException="App_DispatcherUnhandledException"Exit="Application_Exit"ShutdownMode="OnMainWindowClose"><Application.Resources></Application.Resources>
</Application>
// App.xaml.cs 相关代码
using System.Configuration;
using System.Data;
using System.Diagnostics;
using System.Windows;
using System.Windows.Threading;namespace WpfFirstApp
{/// <summary>/// Interaction logic for App.xaml/// </summary>public partial class App : Application{/// <summary>/// 启动/// </summary>/// <param name="sender"></param>/// <param name="e"></param>private void Application_Startup(object sender, StartupEventArgs e){Debug.WriteLine("应用启动了:Startup");//this.ShutdownMode = ShutdownMode.OnMainWindowClose;}/// <summary>/// 获得焦点/// </summary>/// <param name="sender"></param>/// <param name="e"></param>private void Application_Activated(object sender, EventArgs e){Debug.WriteLine("应用获得焦点了:Activated");}/// <summary>/// 失去焦点/// </summary>/// <param name="sender"></param>/// <param name="e"></param>private void Application_Deactivated(object sender, EventArgs e){Debug.WriteLine("应用失去焦点了:Deactivated");}/// <summary>/// 异常/// </summary>/// <param name="sender"></param>/// <param name="e"></param>private void App_DispatcherUnhandledException(object sender, DispatcherUnhandledExceptionEventArgs e){Debug.WriteLine("应用出现未处理的异常:DispatcherUnhandledException");//设置为已处理了异常e.Handled = true;}/// <summary>/// 退出/// </summary>/// <param name="sender"></param>/// <param name="e"></param>private void Application_Exit(object sender, ExitEventArgs e){Debug.WriteLine("程序关闭退出了:Exit");}}
}
//MainWindow.xaml.cs 相关代码
// 按钮里模拟相关处理
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;namespace WpfFirstApp
{/// <summary>/// Interaction logic for MainWindow.xaml/// </summary>public partial class MainWindow : Window{public MainWindow(){InitializeComponent();}private void Button_Click(object sender, RoutedEventArgs e){Dispatcher.Invoke(() =>{throw new Exception("模拟异常");//throw new InvalidOperationException("模拟异常");});}private void Button_Click_1(object sender, RoutedEventArgs e){Dispatcher.Invoke(() =>{Application.Current.Shutdown(9999);});}}
}

 

相关文章:

WPF应用程序生存期以及相关事件

WPF 应用程序的生存期会通过 Application 引发的几个事件来加以标记&#xff0c;相关事件对应着应用程序何时启动、激活、停用和关闭。 应用程序生存期事件 • 独立应用程序(传统风格的 Windows 应用程序&#xff0c;这些应用程序作为要安装到客户端计算机并从客户端计算机运…...

【Git】任何位置查看git日志

需求 现需要查看指定项目中的某个文件的 Git 日志。如有 项目代码 jflowable &#xff0c;需要查看其下文件 D:\z_workspace\jflowable\src\main\java\com\xzbd\jflowable\controller\TestController.java 的日志。 分析 一般的思路是&#xff0c;进入 jflowable 项目&#…...

Socket通讯使用的坑-消息合并发送-解决方法

关联文章 Socket通讯使用的坑-消息合并发送-CSDN博客 解决方法 /// <summary> /// 公共方法 /// </summary> public static class CommonMethods {/// <summary>/// 多个JSON对象字符串转成JSON字符串列表/// </summary>/// <param name"j…...

【Linux】基本指令

Hello everbody!这次咱们紧接着上一篇文章&#xff0c;继续介绍Linux操作系统的一些基本指令。这些指令是入门级别的&#xff0c;比较基础的。相当于windows中文件的复制&#xff0c;重命名&#xff0c;创建文件&#xff0c;创建目录之类的&#xff0c;还有如何在Linux中写c语言…...

JS中数组的相关方法介绍

push() 将一个或多个元素添加到数组的末尾&#xff0c;并返回新的长度。 let arr [1, 2, 3]; arr.push(4); // arr 现在是 [1, 2, 3, 4] pop() 删除并返回数组的最后一个元素 let arr [1, 2, 3, 4]; let last arr.pop(); // last 现在是 4&#xff0c;arr 现在是 [1, …...

mybtis动态SQL注解 脚本动态SQL\方法中构建SQL\SQL语句构造器

mybtis动态SQL注解 动态SQL注解脚本动态SQL方法中构建SQLSQL语句构造器 动态SQL注解 分类&#xff1a; 脚本动态SQL&#xff1a;XML配置方式的动态SQL&#xff0c;是用<script>的方式把它照搬过来&#xff0c;用注解来实现。适用于xml配置转换到注解配置方法中构建SQL&…...

TikTok电商加快闭环,独享IP为运营带来哪些好处?

近日有消息称TikTok电商在加快闭环&#xff0c;以后商家可能无法继续在TikTok上为其他电商平台或独立站引流了。如今“TikTok Shop Shopping Center”平台正在构建&#xff0c;将各种购物渠道整合为一体&#xff0c;这可能是一种趋势&#xff0c;意味着TikTok逐渐从社交应用转型…...

LaTeX系列4——列表

无序列表 \documentclass[UTF-8]{ctexart}\begin{document} \begin{itemize}\item{列表项1}\item{列表项2}\item{列表项3} \end{itemize} \end{document} 有序列表 \documentclass[UTF-8]{ctexart}\begin{document} \begin{enumerate}\item{列表项1}\item{列表项2}\item{列表…...

JNI笔记

JNI笔记 背景Demo代码JNI.javaMainActivity.javaAndroid.mkApplication.mkcom_stone_javacallc_JNI.hjavacallc.cbuild.gradle 背景 Demo代码 代码结构 JNI.java package com.stone.javacallc;/*** Created by stoneWang* Created on 2024/1/16* java调用C*/ public class …...

使用nginx的proxy_cache实现静态资源的缓存

nginx的版本 ./nginx -v nginx version: nginx/1.9.15需求 要求nginx缓存静态资源&#xff0c;如js、css、图片等&#xff0c;避免对静态资源的访问直接穿透到后端的j2ee应用侧&#xff0c;提高后端j2ee应用的运行效率。 配置方法 针对js、css、图片文件 分别增加缓存路径的…...

【Golang】Perl 正则表达式语法的支持示例

背景 在 Golang 中&#xff0c;标准库的正则表达式包 regexp 是基于 RE2 语法的&#xff0c;并不直接支持 Perl 正则表达式的全部功能。虽然 Golang 的标准库并不直接提供对 Perl 正则表达式的支持&#xff0c;但是您可以使用第三方库来实现与 Perl 兼容的正则表达式功能。 一…...

手写一个std::function

前言 在《std::function从实践到原理》中我们分析了std::function的实现原理&#xff0c;但这只是纸上谈兵。要想理解为什么这么实现&#xff0c;最好的办法还是想想要是自己手写一个要怎么实现。本文不想直接呈现最终版本&#xff0c;因为那样读者看不到某段代码是为了什么才…...

04--MySQL函数的使用

1、SQL函数的使用 当我们学习编程语言的时候&#xff0c;经常会遇到函数。函数的好处是&#xff0c;它可以把我们经常使用的代码封装起来&#xff0c;需要的时候直接调用即可。这样既提高了编写代码的效率&#xff0c;又提高了可维护性。在SQL中函数主要要对数据进行处理&…...

imgaug库指南(28):从入门到精通的【图像增强】之旅(万字长文)

引言 在深度学习和计算机视觉的世界里&#xff0c;数据是模型训练的基石&#xff0c;其质量与数量直接影响着模型的性能。然而&#xff0c;获取大量高质量的标注数据往往需要耗费大量的时间和资源。正因如此&#xff0c;数据增强技术应运而生&#xff0c;成为了解决这一问题的…...

精确掌控并发:漏桶算法在分布式环境下并发流量控制的设计与实现

这是《百图解码支付系统设计与实现》专栏系列文章中的第&#xff08;16&#xff09;篇&#xff0c;也是流量控制系列的第&#xff08;3&#xff09;篇。点击上方关注&#xff0c;深入了解支付系统的方方面面。 本篇重点讲清楚漏桶原理&#xff0c;在支付系统的应用场景&#x…...

【Redis】Redis面试热点

Redis 集群有哪些方案&#xff1f; 主从复制&#xff1a;解决了高并发问题 哨兵模式&#xff1a;解决了高并发&#xff0c;高可用问题 分片集群&#xff1a;解决了海量数据存储&#xff0c;高并发写的问题 主从复制 图示&#xff1a; 主从复制&#xff1a;单节点 Redis 并发…...

构建中国人自己的私人GPT-有道GPT

创作不易&#xff0c;请大家多鼓励支持。 在现实生活中&#xff0c;很多人的资料是不愿意公布在互联网上的&#xff0c;但是我们又要使用人工智能的能力帮我们处理文件、做决策、执行命令那怎么办呢&#xff1f;于是我们构建自己或公司的私人GPT变得非常重要。 先看效果 一、…...

data = self._data_queue.get(timeout=timeout)

目录 解决方法 freeze_support 解决方法 opencv 升级 方法3 OMP_NUM_THREADS&#xff1a; 报错&#xff1a; data self._data_queue.get(timeouttimeout) 解决方法 freeze_support data self._data_queue.get(timeouttimeout)RuntimeError: DataLoader worker (pid(s)…...

推挽输出、开漏输出、上拉输入、下拉输入、浮空输入。

一、推挽输出 推挽输出的内部电路大概如上图中黄色部分&#xff0c;输出控制内有反相器&#xff0c;由一个P-MOS和一个N-MOS组合而成&#xff0c;同一时间只有一个管子能够进行导通。 当写入1时&#xff0c;经过反向器后为0&#xff0c;P-MOS导通&#xff0c;N-MOS截至&#xf…...

【Java JVM】栈帧

执行引擎是 Java 虚拟机核心的组成部分之一。 在《Java虚拟机规范》中制定了 Java 虚拟机字节码执行引擎的概念模型, 这个概念模型成为各大发行商的 Java 虚拟机执行引擎的统一外观 (Facade)。 不同的虚拟机的实现中, 通常会有 解释执行 (通过解释器执行)编译执行 (通过即时编…...

wordpress后台更新后 前端没变化的解决方法

使用siteground主机的wordpress网站&#xff0c;会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后&#xff0c;网站没有变化的情况。 不熟悉siteground主机的新手&#xff0c;遇到这个问题&#xff0c;就很抓狂&#xff0c;明明是哪都没操作错误&#x…...

12.找到字符串中所有字母异位词

&#x1f9e0; 题目解析 题目描述&#xff1a; 给定两个字符串 s 和 p&#xff0c;找出 s 中所有 p 的字母异位词的起始索引。 返回的答案以数组形式表示。 字母异位词定义&#xff1a; 若两个字符串包含的字符种类和出现次数完全相同&#xff0c;顺序无所谓&#xff0c;则互为…...

css3笔记 (1) 自用

outline: none 用于移除元素获得焦点时默认的轮廓线 broder:0 用于移除边框 font-size&#xff1a;0 用于设置字体不显示 list-style: none 消除<li> 标签默认样式 margin: xx auto 版心居中 width:100% 通栏 vertical-align 作用于行内元素 / 表格单元格&#xff…...

ArcGIS Pro制作水平横向图例+多级标注

今天介绍下载ArcGIS Pro中如何设置水平横向图例。 之前我们介绍了ArcGIS的横向图例制作&#xff1a;ArcGIS横向、多列图例、顺序重排、符号居中、批量更改图例符号等等&#xff08;ArcGIS出图图例8大技巧&#xff09;&#xff0c;那这次我们看看ArcGIS Pro如何更加快捷的操作。…...

Spring AI与Spring Modulith核心技术解析

Spring AI核心架构解析 Spring AI&#xff08;https://spring.io/projects/spring-ai&#xff09;作为Spring生态中的AI集成框架&#xff0c;其核心设计理念是通过模块化架构降低AI应用的开发复杂度。与Python生态中的LangChain/LlamaIndex等工具类似&#xff0c;但特别为多语…...

深入浅出深度学习基础:从感知机到全连接神经网络的核心原理与应用

文章目录 前言一、感知机 (Perceptron)1.1 基础介绍1.1.1 感知机是什么&#xff1f;1.1.2 感知机的工作原理 1.2 感知机的简单应用&#xff1a;基本逻辑门1.2.1 逻辑与 (Logic AND)1.2.2 逻辑或 (Logic OR)1.2.3 逻辑与非 (Logic NAND) 1.3 感知机的实现1.3.1 简单实现 (基于阈…...

接口自动化测试:HttpRunner基础

相关文档 HttpRunner V3.x中文文档 HttpRunner 用户指南 使用HttpRunner 3.x实现接口自动化测试 HttpRunner介绍 HttpRunner 是一个开源的 API 测试工具&#xff0c;支持 HTTP(S)/HTTP2/WebSocket/RPC 等网络协议&#xff0c;涵盖接口测试、性能测试、数字体验监测等测试类型…...

破解路内监管盲区:免布线低位视频桩重塑停车管理新标准

城市路内停车管理常因行道树遮挡、高位设备盲区等问题&#xff0c;导致车牌识别率低、逃费率高&#xff0c;传统模式在复杂路段束手无策。免布线低位视频桩凭借超低视角部署与智能算法&#xff0c;正成为破局关键。该设备安装于车位侧方0.5-0.7米高度&#xff0c;直接规避树枝遮…...

Android写一个捕获全局异常的工具类

项目开发和实际运行过程中难免会遇到异常发生&#xff0c;系统提供了一个可以捕获全局异常的工具Uncaughtexceptionhandler&#xff0c;它是Thread的子类&#xff08;就是package java.lang;里线程的Thread&#xff09;。本文将利用它将设备信息、报错信息以及错误的发生时间都…...

pgsql:还原数据库后出现重复序列导致“more than one owned sequence found“报错问题的解决

问题&#xff1a; pgsql数据库通过备份数据库文件进行还原时&#xff0c;如果表中有自增序列&#xff0c;还原后可能会出现重复的序列&#xff0c;此时若向表中插入新行时会出现“more than one owned sequence found”的报错提示。 点击菜单“其它”-》“序列”&#xff0c;…...