C# 异步与Windows应用程序

c86565584518bb70406ac538888bc1f7.png

把 async 关键字用于 UWP 应用程序,需要注意,在 UI 线程中调用 await 之后,当异步方法返回时,将默认返回到 UI 线程中。这便于在异步方法完成后更新 UI 元素。

注意

为了创建 UWP 应用程序,需要 Windows 10,Windows 系统必须在 “开发人员模式” 下配置。启用 “开发人员模式” 时,需要打开 Windows 设置,选择 Update & Security 磁贴,选择 For developers 类别,并单击单选按钮 Developermode。这样系统就可以运行旁路的应用程序了(未从 Windows Store 中安装的应用程序),并为 “开发人员模式” 添加一个 Windows 包。

为了理解功能和问题,创建一个通用 Windows 应用程序。这个应用程序包含 5个 按钮和一个TextBlock元素,来演示不同的场景:

<StackPanel><Button Content="Start Async" Click="OnStartAsync" Margin="4" /><Button Content="Start Async with Config" Click="OnStartAsyncConfigureAwait"Margin="4" /><Button Content="start Async with thread switch"Click="OnStartAsyncWithThreadSwitch" Margin="4" /><Button Content="Use IAsyncOperation" Click="OnIAsyncOperation" Margin="4" /><Button Content="Deadlock" Click="OnStartDeadlock" Margin="4" /><TextBlock x:Name="text1" Margin="4" />
</StackPanel>

在 OnStartAsync 方法中,UI 线程的线程 ID 写入 TextBlock 元素。接下来调用异步方法 Task.Delay,它不阻塞 UI 线程,在此方法完成后,线程 ID 将再次写入TextBlock:

private async void OnstartAsync(object sender, RoutedEventArgs e)
{text1.Text = $"UI thread: {GetThread()}";await Task.Delay(1000);text1.Text += $"in after await: {GetThread()}";
}

为了访问线程 ID,可以使用 Environment 类。在 UWP 应用程序中,Thread 类是无效的 —— 至少在构建版本 15063 之前是这样的:

private string GetThread() => $"thread: {Environment.CurrentManagedThreadId)";

运行应用程序时,可以在文本元素中看到类似的输出。与控制台应用程序相反,UWP 应用程序定义了一个同步上下文,在等待之后,可以看到与以前相同的线程。这允许直接访问 UI 元素:

UI thread: thread 3 
after await:thread 3

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

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

相关文章

重装系统后恢复oracle数据

2019独角兽企业重金招聘Python工程师标准>>> 由于前段时间重装了系统&#xff0c;今天重装了数据库oracle XE版本&#xff0c;用“移花接木”的手段将新装oracle的目录用原有目录直接给覆盖&#xff0c;于是顺利的启动了oracle服务&#xff0c;然后又打开plsql deve…

使用eclipse运行mapreduce程序

今天使用http://www.cnblogs.com/xia520pi/archive/2012/05/16/2504205.html上的方式搭建一个基于Eclipse的mapreduce开发环境&#xff0c;在运行WordCount例子时出现错误&#xff0c;经过检查后才发现&#xff0c;装了hadoop2.0插件的Eclipse在右击选择“run on hadoop”时不会…

java Split 用法

在java.lang包中有String.split()方法,返回是一个数组 我在应用中用到一些,给大家总结一下,仅供大家参考: 1、如果用“.”作为分隔的话,必须是如下写法,String.split("\\."),这样才能正确的分隔开,不能用String.split("."); 2、如果用“|”作为分隔的话,必…

html三列布局源码,HTML三列布局 - 黄柳淞的个人页面 - OSCHINA - 中文开源技术交流社区...

1.三列布局1三列布局body{padding: 0;margin: 0;}.left{width:33.3%;height: 500px;background-color: #ccc;float: left;}.middle{width:33.3%;height: 500px;background-color: #bbb;float: left;}.right{width:33.3%;height: 500px;background-color: #aaa;float: left;}33.…

Android之如何用dextra.ELF64查看安卓手机“设置“图标的源代码

1、找到手机“设置”图标的包名 adb shell dumpsys activity top 得到包名: com.android.settings 2、拉下odex文件 1)、通过包名得到odex文件 adb shell pm list pakcage -f | grep com.android.settings 2)、得到结果 package:/system/priv-app/Settings/Settings.apk=co…

unity3d Json解析工具类

使用到的是Newtonsoft.Json动态库&#xff0c;下载地址&#xff1a;http://www.newtonsoft.com/json using Newtonsoft.Json; using System.Collections.Generic; using System.IO;/// <summary> /// Json帮助类 /// </summary> public class JsonHelper {/// <…

.NET6之MiniAPI(二十):实体验证FluentValidation

为了验证api post上来的数据的有效性&#xff0c;我们可以引入FluentValidation(详见https://fluentvalidation.net)。在asp.net mvc中&#xff0c;使用的是模型验证&#xff0c;通过在实体类上添加特性达到验证效果。FluentValidation的原理是通过实现AbstractValidator<T&…

nagios的搭建及配置----(中)

上篇文章写到了我们布置的nagios监控本机的状态&#xff0c;下面我们来看下nagios监控服务器状态的配置。至于为什么要这么配置&#xff0c;大家可以自行去百度下看看使用NRPE插件实现对remote server 进行监控&#xff0c;远程服务器配置1&#xff0c;编译安装nagios-plugin&a…

计算机整个文稿应用回顾主题,《计算机应用基础》精品课程电子教案-PowerPoint 2003...

一&#xff0e;回顾上次课内容(提问方式)对于幻灯片的切换、配色方案的使用、母版的使用用实例进行提问&#xff0c;通过学生的操作了解学生掌握的情况&#xff0c;并加强学生的实践操作能力。二、新课教学(讲解法、示范法)5.6.1幻灯片切换具体操作方法如下&#xff1a;在【幻灯…

linux之so文件、a文件、o文件的区别

1、o文件 o 就相当于windows里的obj文件 ,一个.c或.cpp文件对应一个.o文件 .o 文件是源码编译出的二进制文件。 你先得了解从源代码到可执行文件的过程。以一个简单的add函数源文件为例。 int add(int a,int b) {return a+b; } 先预处理为.i文件gcc -E add.c -o add.i 再编译为…

【F大说】Flash的那些坑

转载自F大的自言自语←_←创建控件类时&#xff0c;基类不能用源码创建控件类时&#xff0c;基类要以swc方式提供&#xff08;不能用源码&#xff09;&#xff0c;否则控件中所包含的子元件实例名将被添加到基类&#xff0c;而不是控件类中去。调用gotoAndStop会导致帧代码插队…

iNeuOS工业互联网操作系统,顺利从NetCore3.1升级到Net6的过程汇报,发布3.7版本...

目 录1..... 概述... 12..... 升级的工程... 33..... 升级的代码差异... 44..... 系统运行... 51. 概述我们团队一直在工业领域从事实时系统和业务系统的开发与集成工作&#xff0c;开发语言使用过C51/C/VB/VC/C#(Net Framework)/C#(Netcore3.1)/C#(NET6)。前几天微软发…

软件设计和设计的问题

先感概一句, 软件设计是一个不太容易的事情&#xff0c;尤其历史需要兼容新需求的问题。 软件设计 软件设计包括很多&#xff0c;软件架构&#xff0c;软件结构&#xff0c;数据库设计。 软件不是从0开始的&#xff0c;一般都会有一些支撑组件&#xff0c;尤其现在的web程序&am…

郑州升达经贸管理学院计算机科学与技术,郑州升达经贸管理学院计算机科学与技术专业2016年在福建理科高考录取最低分数线...

类似问题答案郑州升达经贸管理学院计算机科学与技术专业2016年在吉林理科高考录取最低分数线学校 地 区 专业 年份 批次 类型 分数 郑州升达经贸管理学院 吉林 计算机科学与技术 2016 二批 理科 336 学校 地 区 专业 年份 批次 类型 分数 郑州升达经贸管理学院 吉林 计算机科学…

Android之INSTALL_FAILED_UPDATE_INCOMPATIBLE(pacakge:...do not match the previously installed version)

1、问题&#xff1a; adb install -r ***.apk 出现下面错误 INSTALL_FAILED_UPDATE_INCOMPATIBLE(pacakge:...do not match the previously installed version&#xff1b;ignoring) 2、解决办法&#xff1a; 用ApkHelp工具&#xff0c;检验这2g个apk,发现签名不一样&#…

0714M

/*************************************************************************> File Name: code/2015summer/0714/M.cpp> Author: 111qqz> Email: rkz2013126.com > Created tim: 2015年07月14日 星期二 11时37分51秒******************************************…

鲜为人知的编程真相

2019独角兽企业重金招聘Python工程师标准>>> 当程序员的经历让我知道了一些关于软件编程的事情。下面的这些事情可能会让朋友们对软件开发感到惊讶&#xff1a; 一个程序员用在写程序上的时间大概占他的工作时间的10-20%&#xff0c;大部分的程序员每天大约能写出10…

如何理解 ListT和 DictionaryK,V 的扩容机制 ?

咨询区 Royi Namir为什么 List 是按照 2倍 扩容。private void EnsureCapacity(int min) {if (this._items.Length < min){int num (this._items.Length 0) ? 4 : (this._items.Length * 2);if (num < min){num min;}this.Capacity num;} }而 Dictionary<K,V>…

Android stduio之Plugin with id ‘com.android.application‘ not found解决办法

1、错误 Plugin with id com.android.application not found 2、解决办法 打开项目的build.gradle&#xff0c;看是否有buildscript&#xff5b;&#xff5d;&#xff0c;如果没有&#xff0c;加上 buildscript {repositories {mavenCentral() // or jcenter()}dependenc…

专科学会计还是计算机应用技术好,专科毕业想要学习会计专业,我专科是学计算机应用,但是毕业后家里让我学会计这门专业,具体是该怎么办呢...

技校网专门为您推荐的类似问题答案问题1&#xff1a;福建自考会计学需要考哪些专业,我是计算机专科毕业的020204 会计 (独立本科段) -http://www.fjzk.com.cn/portal/html/193/20081202000018.html--------------------------------------------------------------------------…