WPF_Application

news2024/11/26 19:39:21

文章目录

  • Application
    • 1 Application类
      • 1.1 定义
      • 1.2 示例
      • 1.3 附注
    • 2 Application常用属性
      • 2.1 Current
      • 2.2 Dispatcher
    • 3 总结


Application

1 Application类

1.1 定义

该类封装了一个WPF应用程序。
在这里插入图片描述
该类派生自DispatcherObject,实现了IQueryAmbient接口。

1.2 示例

以下代码展示了用标签定义一个标准的Application:

<!--在WPF应用程序工程模板的App.xaml中可以看到类似代码-->
<Application xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"/>

下面代码展示了如何用代码来定义一个标准的Application:

using System;
using System.Windows;

namespace SDKSample
{
    public class AppCode : Application
    {
        // Entry point method
        [STAThread]
        public static void Main()
        {
            AppCode app = new AppCode();
            app.Run();
        }
    }
}

下面代码展示了标签结合后台代码来定义一个标准的Application,WPF模板程序就是这种方式,

<Application 
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
  x:Class="SDKSample.App" />
using System.Windows;

namespace SDKSample
{
	public partial class App : Application { }
}

1.3 附注

Application是一个类,它封装了WPF程序特有的功能,包含以下这些:

  • 应用程序的生命周期 :Activated, Current, Deactivated, DispatcherUnhandledException, Exit, Run, SessionEnding, Shutdown, ShutdownMode, Startup.
  • 应用程序域/范围的窗口、属性和资源管理 :FindResource, GetContentStream, GetResourceStream, LoadComponent, MainWindow, Properties, Resources, StartupUri, Windows.
  • 命令行参数和退出代码处理 :Application.Startup, Application.Exit, Application.Shutdown.
  • 导航 :FragmentNavigation, LoadCompleted, Navigated, Navigating, NavigationProgress, NavigationStopped, NavigationFailed, SetCookie, GetCookie.

Application实现了单例模式(singleton pattern),以提供对其窗口、属性和资源作用域服务的共享访问。因此,每个AppDomain只能创建一个Application类的实例。

AppDomain(应用程序域)


应用程序域由 AppDomain 对象表示,它们为执行托管代码提供隔离、卸载和安全边界。
似乎在你的工程代码中看不到它,因为它是CLR的执行单元。
应用程序域是每个应用程序独立的一块区域,它为Application执行提供了隔离环境,暂时理解到这就行。

你可以使用标签(Markup)、标签结合后台代码或者仅用代码来实现一个Application。若Application是用标签实现的,无论是标签还是标签结合后台代码,标签文件必须配置为Microsoft构建引擎(MSBuild) ApplicationDefinition 项。

注意


独立应用程序不需要Application对象;可以实现一个自定义的static入口点方法(Main),打开一个窗口而不创建应用程序实例。不过,XAML浏览器应用程序(XBAPs)需要一个Application对象。

2 Application常用属性

2.1 Current

它表示当前正在运行的WPF应用程序的Application实例,用于获取当前AppDomain的Application对象。
Application是每个AppDomain的单例类型,它实现了静态的Current属性,为当前AppDomain提供对Application实例的共享访问。这种设计确保了状态(包括共享资源和状态)由Application管理,可以从单个共享位置访问。

该属性是线程安全的,并且可以从任何线程访问
在这里插入图片描述

2.2 Dispatcher

先看下继承关系:
在这里插入图片描述
Application是DispatcherObject的子类,且每个DispatcherObject都有关联的Dispatcher,而Dispatcher是用于管理线程工作项队列的调度器。
在这里插入图片描述
因此该属性的作用是获取该DispatcherObject(即Application)关联的Dispatcher。
那么问题来了,
Application封装了一个WPF应用程序,与之关联的Dispatcher是啥呢?
如果你看过WPF的线程模型,应该不难猜到,该Dispatcher是用来管理UI线程的工作项队列的(WPF是单线程模型)。再结合Application实现了单例模式,我们通常可以用Application.Current.Dispatcher在后台线程中要求UI线程代表其执行操作。

3 总结

  • Application类封装了一个WPF应用程序。
  • Application实现了单例模式(Singleton Pattern),以提供对其窗口、属性和资源作用域服务的共享访问。通过Application.Current访问。
  • 通过Application.Current.Dispatcher可以将操作排队到UI线程中执行,这在跨线程操作中非常有用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/423847.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ICLR Spotlight | 卷积网络上的首个BERT/MAE预训练,ResNet也能用

“删除-再恢复” 形式的自监督预训练可追溯到 2016 年&#xff0c;早于 18 年的 BERT 与 21 年的 MAE。然而在长久的探索中&#xff0c;这种 BERT/MAE 式的预训练算法仍未在卷积模型上成功&#xff08;即大幅超过有监督学习&#xff09;。本篇 ICLR Spotlight 工作 “Designing…

PPP协议相关的知识

这只是我自己在学习时的总结&#xff0c;对于我有用的知识点&#xff0c;希望可以和大家分享&#xff0c;主要学习的文章如下&#xff0c;如有兴趣也可以去了解一下其他作者写的ppp协议的知识点。 PPP协议详解https://blog.csdn.net/m0_49864110/article/details/124987932?o…

Spring Boot 之四:使用Feign实现微服务间的交互

系列目录&#xff08;持续更新。。。&#xff09; Spring Cloud&#xff1a;什么是微服务 Spring Cloud之一&#xff1a;注册与发现-Eureka工程的创建 Spring Cloud之二&#xff1a;服务提供者注册到Eureka Server Spring Cloud之三&#xff1a;Eureka Server添加认证 Spr…

Talk预告 | 清华大学交叉信息研究院助理教授赵行:基于视觉感知的自动驾驶运动预测

本期为TechBeat人工智能社区第481期线上Talk&#xff01; 北京时间3月15日(周三)20:00&#xff0c;清华大学交叉信息研究院助理教授——赵行的Talk将准时在TechBeat人工智能社区开播&#xff01; 他与大家分享的主题是: “基于视觉感知的自动驾驶运动预测”&#xff0c;届时将…

Dish - TS:减轻时间序列预测中分布偏移的一般范式

摘要 时间序列预测中的分布偏移&#xff08;TSF&#xff09;指的是序列分布随时间发生变化&#xff0c;这很大程度上阻碍了TSF模型的性能。现有针对时间序列中分布偏移的研究主要限于分布的量化&#xff0c;更重要的是忽略了回视窗口和预测窗口&#xff08;horizon windows&am…

Cross Attentional Audio-Visual Fusion for Dimensional Emotion Recognition阅读笔记

Abstract 摘要——多模态分析最近引起了人们对情感计算的极大兴趣&#xff0c;因为它可以提高情感识别相对于孤立的单模态方法的整体准确性。 最有效的多模态情绪识别技术有效地利用各种免费的信息源&#xff0c;例如面部、声音和生理模式&#xff0c;以提供全面的特征表示。 …

谷歌云服务器centos9的docker部署chat-web,实现自己的ChatGPT

谷歌云服务器centos9的docker部署chat-web&#xff0c;实现自己的ChatGPT 前提条件&#xff1a;准备一个境外服务器和chatgpt的key。&#xff08;网上教程很多&#xff09; 1.更新yum yum update2.下载docker-ce的repo curl https://download.docker.com/linux/centos/dock…

IDEA Eval Reset 使用方法

IDEA Eval Reset 使用方法 idea eval reset 使用方法安装插件 离线安装方式 1、下载插件 下载地址&#xff1a;https://plugins.zhile.io/files/ide-eval-resetter-2.1.6.zip2、安装插件直接下载插件 zip 包&#xff08;macOS 可能会自动解压&#xff0c;然后把 zip 包丢进回收…

文旅+虚拟数字人,开启数字文旅发展新方向

随着元宇宙概念爆发&#xff0c;对接虚拟与现实的虚拟数字人正成为国内数字文旅发展的新突破口&#xff01;无论是当地文旅机构、文旅品牌还是政府部门来说&#xff0c;虚拟数字人具有独特的可塑性和创新性&#xff0c;利用文旅虚拟数字人广泛的应用场景&#xff0c;把文旅虚拟…

第十九章 案例TodoList之组件拆分

光说不练假把式&#xff0c;接下来我们将练习一个案例TodoList&#xff0c;让我们熟悉react。 以上是该案例的静态示例&#xff0c;其功能有&#xff1a; 在输入框输入任务&#xff0c;按回车键新增一个任务项鼠标移动在单个任务项上面&#xff0c;出现删除按钮点击删除按钮&a…

密度聚类算法(DBSCAN)实验案例

密度聚类算法&#xff08;DBSCAN&#xff09;实验案例 描述 DBSCAN是一种强大的基于密度的聚类算法&#xff0c;从直观效果上看&#xff0c;DBSCAN算法可以找到样本点的全部密集区域&#xff0c;并把这些密集区域当做一个一个的聚类簇。DBSCAN的一个巨大优势是可以对任意形状…

SpringSecurity 学习笔记 下(微服务权限方案)

SpringSecurity 微服务权限方案 一、 什么是微服务 1.1 微服务由来 微服务最早由 Martin Fowler 与 James Lewis 于 2014 年共同提出&#xff0c;微服务架构风格是一种使用一套小服务来开发单个应用的方式途径&#xff0c;每个服务运行在自己的进程中&#xff0c;并使用轻量级…

使用Swagger生成在线文档

目录 1&#xff1a;Swagger介绍 2&#xff1a;使用 2.1&#xff1a;swaager集成boot依赖 2.2&#xff1a;配置文件中配置相关信息 2.3&#xff1a;在启动类中加入相关注解 2.4&#xff1a;测试 3&#xff1a;swagger常用注解 1&#xff1a;Swagger介绍 在前后端分离开发…

GET和POST方式请求API接口数据返回

区别&#xff1a; GET在浏览器回退时是无害的&#xff0c;而POST会再次提交请求。 GET产生的URL地址可以被Bookmark&#xff0c;而POST不可以。 GET请求会被浏览器主动cache&#xff0c;而POST不会&#xff0c;除非手动设置。 GET请求只能进行url编码&#xff0c;而POST支持…

DETR【论文阅读】

End-to-End Object Detection with Transformers 1. Introduction 发表&#xff1a;ECCV 2020影响&#xff1a;在目标检测上使用了一种全新的架构&#xff0c;是里程碑式的工作。简单优雅统一的结构&#xff0c;不再依赖于人的先验知识&#xff08;anchor生成&#xff0c;nms…

二叉树_详解

目录 1. 树型结构 1.1 概念 1.2 概念 1.3 树的表示形式 1.4 树的应用 2. 二叉树 2.1 概念 2.2 两种特殊的二叉树 2.3 二叉树的性质 2.4 二叉树的存储 2.5 二叉树的基本操作 2.5.1 前置说明 2.5.2 二叉树的遍历 2.5.3 二叉树的基本操作 1. 树型结构 1.1 概念 …

k8s集群上安装Velero,用Velero备份K8S的数据

前提条件&#xff1a; 需要有一个K8S集群&#xff01; 一、概述 Velero是一个开源工具&#xff0c;可以安全地备份和还原&#xff0c;执行灾难恢复以及迁移Kubernetes集群资源和持久卷。 二、docker安装minio mkdir -p /home/minio docker run -p 9000:9000 -p 9090:9090 …

Win11去掉桌面图标快捷方式(2)----Dism++

1.Dism介绍 Dism&#xff0c;也许是最强的实用工具全球第一款基于 CBS 的 Dism GUI 实现。 兼容 Windows Vista/7/8/8.1/10 Dism可以说是一个Dism的GUI版&#xff0c;但是并不依赖Dism&#xff0c;直接基于更底层的CBS&#xff08;Component Based Servicing Reference&…

第1章 如何听起来像数据科学家

第1章 如何听起来像数据科学家 文章目录第1章 如何听起来像数据科学家1.1.1 基本的专业术语1.1.3 案例&#xff1a;西格玛公司1.2.3 为什么是Python1.4.2 案例&#xff1a;市场营销费用1.4.3 案例&#xff1a;数据科学家的岗位描述我们拥有如此多的数据&#xff0c;而且正在生产…

山西省税务汇总申报流程

1、国家税务总局山西省电子税务局 企业登录&#xff1a;填写社会信用代码、密码、手机号、获取验证码&#xff0c;即可登录成功。 2、登录成功后&#xff0c;按下图 第一步进行数据更新、第二步点击“我要办税”->税费申报及缴纳 3、先填写报表->增值税及附加税 4、…