[C#] C#并发编程-异步编程基础-报告进度

 1     int ProgressRate = 0;
 2
 3     private async void btnProgress_Click(object sender, EventArgs e)
 4     {
 5         ProgressRate = 0;
 6
 7         var progress = new Progress<int>();
 8
 9         //progress的进度改变
10         progress.ProgressChanged += (obj1, obj2) =>
11         {
12             if (ProgressRate <= 100)
13             {
14                 this.lblProgress.Content = ProgressRate.ToString() + "%";
15                 this.pbProgress.Value = ProgressRate;
16             }
17             else
18             {
19                 this.btnProgress.IsEnabled = true;
20             }
21
22         };
23
24         this.btnProgress.IsEnabled = false;
25         await ReportProgressAsync(progress);
26     }
27
28     //在此报告progress的进度,更改ProgressRate的值
29     private async Task ReportProgressAsync(IProgress<int> progress = null)
30     {
31         while (ProgressRate <= 100)
32         {
33             if (progress != null)
34             {
35                 await Task.Delay(TimeSpan.FromMilliseconds(100));
36                 progress.Report(ProgressRate++);
37             }
38         }
39     }

结果:

时间: 2024-10-08 10:17:36

[C#] C#并发编程-异步编程基础-报告进度的相关文章

Python多线程,多进程,并行,并发,异步编程

Python并发与并行的新手指南:http://python.jobbole.com/81260/ Python 中的多线程,多进程,并发,并行,同步,通信:https://blog.csdn.net/timemachine119/article/details/54091323 python进阶笔记 thread 和 threading模块学习:https://www.cnblogs.com/forward-wang/p/5970640.html Python 中的多线程,多进程,并发,并行,

.net异步编程の-------异步编程模型(APM)

术语解释: APM               异步编程模型, Asynchronous Programming Model EAP                基于事件的异步编程模式, Event-based Asynchronous Pattern TAP                基于任务的异步编程模式, Task-based Asynchronous Pattern 一.异步编程 APM即异步编程模型的简写(Asynchronous Programming Model),大家在写代

async和await关键字实现异步编程

async和await关键字实现异步编程 异步编程 概念 异步编程核心为异步操作,该操作一旦启动将在一段时间内完成.所谓异步,关键是实现了两点:(1)正在执行的此操作,不会阻塞原来的线程(2)一旦启动的此操作,可以继续执行其他任务.当该操作完成时,将调用回调函数来通知该操作已经结束. [注]:本人一直以为同步和异步都属于多线程的范畴,到今天才明白完全错误,异步和多线程是属于不同范畴,多线程和异步是并发的两种形式,并行处理和线程同步是多线程的两种形式,这是我当前的理解,不知是否有误,文中若有错误,

第二章 有什么理由使用Async异步编程

p { display: block; margin: 3px 0 0 0; } --> 写在前面 在学异步,有位园友推荐了<async in C#5.0>,没找到中文版,恰巧也想提高下英文,用我拙劣的英文翻译一些重要的部分,纯属娱乐,简单分享,保持学习,谨记谦虚. 如果你觉得这件事儿没意义翻译的又差,尽情的踩吧.如果你觉得值得鼓励,感谢留下你的赞,在今后每一次应该猛烈突破的时候,不选择知难而退.在每一次应该独立思考的时候,不选择随波逐流,应该全力以赴的时候,不选择尽力而为,愿爱技术的园

探究SynchronizationContext在.Net异步编程中的地位

原文:探究SynchronizationContext在.Net异步编程中的地位 引言: 多线程编程/异步编程非常复杂,有很多概念和工具需要去学习,贴心的.NET提供Task线程包装类和await/async异步编程语法糖简化了异步编程方式. 相信很多开发者都看到如下异步编程实践原则:   实践原则  说明  例外情况  ①  避免 Async Void  最好使用 async Task 方法而不是 async void 方法  事件处理程序  ②  始终使用 await  不要混合阻塞式代码和

如何提高Web服务端并发效率的异步编程技术

作为一名web工程师都希望自己做的web应用能被越来越多的人使用,如果我们所做的web应用随着用户的增多而宕机了,那么越来越多的人就会变得越来越少了,为了让我们的web应用能有更多人使用,我们就得提升web应用服务端的并发能力.那么我们如何做到这点了,根据现有的并发技术我们会有如下选择: 第一个做法:为每个客户端发送给服务端的请求都开启一个线程,等请求处理完毕后该线程就被销毁掉,这种做法很直观,但是在现代的web服务器里这种做法已经很少使用了,原因是新建一个线程,销毁一个线程的开销(开销是指占用

C#复习笔记(5)--C#5:简化的异步编程(异步编程的基础知识)

异步编程的基础知识 C#5推出的async和await关键字使异步编程从表面上来说变得简单了许多,我们只需要了解不多的知识就可以编写出有效的异步代码. 在介绍async和await之前,先介绍一些基础的概念: 并发:同时做很多事情. 这个解释直接表明了并发的作用.终端用户程序利用并发功能,在输入数据库的同时响应用户输入.服务器应用利用并发,在处理第一个请求的同时响应第二个请求.只要你希望程序同时做多件事情,你就需要并发.几乎每个软件程序 都会受益于并发. 多线程:并发的一种形式,它采用多个线程来

C#基础提升系列——C#异步编程

C#异步编程 关于异步的概述,这里引用MSDN的一段文字: 异步编程是一项关键技术,使得能够简单处理多个核心上的阻塞 I/O 和并发操作. 如果需要 I/O 绑定(例如从网络请求数据或访问数据库),则需要利用异步编程. 还可以使用 CPU 绑定代码(例如执行成本高昂的计算),对编写异步代码而言,这是一个不错的方案. 异步代码具有以下特点: 等待 I/O 请求返回的同时,可通过生成处理更多请求的线程,处理更多的服务器请求. 等待 I/O 请求的同时生成 UI 交互线程,并通过将长时间运行的工作转换

异步编程基础

>>返回<C# 并发编程> 1. 概述 2. 报告进度 3. 等待一组任务完成 4. 异常处理 5. 等待任意一个任务完成 6. 避免上下文延续 7. async void 1. 概述 前面的文章介绍了标识了 async 和 await 的代码,是怎么被线程执行的. >>同步上下文-7.5 异步编程(Async) 下面介绍一些类库和常用的API. 2. 报告进度 使用 IProgress<T> 和 Progress<T> 类型 构造 Progre