使用异步编程实现一个加法运算

加法用法 :两个数先后生成,生成这两个数给随机的延迟,等两个数都生成完后再计算结果

 public MainWindow()
        {
            InitializeComponent();
        }
        Random rnd = new Random();
        int aa, bb, cc;
        public async Task GetA()
        {
            await Task.Run(async () =>
             {

                 await Task.Delay(rnd.Next(1000));
                 aa = rnd.Next(100);
             });
            a.Text = aa.ToString();
        }
        public async Task GetB()
        {
            await Task.Run(async () =>
            {

                await Task.Delay(rnd.Next(1000));
                bb = rnd.Next(100);
            });
            b.Text = bb.ToString();
        }
        public async Task GetResult()
        {
            await Task.WhenAll(GetB(), GetA());
            c.Text = (aa + bb)+"";
        }

        private void Button_Click(object sender, RoutedEventArgs e)
        {
            a.Text = b.Text = c.Text = "";
            GetResult();
        }
    }
时间: 2025-01-02 14:12:02

使用异步编程实现一个加法运算的相关文章

webservice之简单创建和发布(一个加法运算)

webservice之简单创建和发布(一个加法运算) 开发工具 visual studio 2010 WebService:严格来说是行业标准,不是技术,使用XML扩展标记语言来表示数据(这个是夸语言和平台的关键).微软的Web服务实现称为ASP.NET Web Service.它使用Soap简单对象访问协议来实现分布式环境里应用程序之间的数据交互. WSDL来实现服务接口相关的描述.此外Web services 可以注册到UDDI中心.供其客户查找使用.后来微软做了ASP.NET Web Se

基于委托的C#异步编程的一个小例子 带有回调函数的例子

我创建的是一个winform测试项目:界面如下: 设置: 下面是代码: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading; using System.Threading.Tasks; usin

初步谈谈 C# 多线程、异步编程与并发服务器

多线程与异步编程可以达到避免调用线程异步阻塞作用,但是两者还是有点不同. 多线程与异步编程的异同: 1.线程是cpu 调度资源和分配的基本单位,本质上是进程中的一段并发执行的代码. 2.线程编程的思维符合正常人的思维习惯,线程中的处理程序依然是顺序执行,所以编程起来比较方便,但是缺点也是明显的,多线程的使用会造成多线程之间的上下文切换带来系统花销,并且共享变量之间也是会造成死锁的问题. 3.因为异步操作无须额外的线程负担,并且使用回调的方式进行处理,在设计良好的情况下,处理函数可以不必使用共享变

使用任务Task 简化异步编程

使用任务简化异步编程 Igor Ostrovsky 下载代码示例 异步编程是实现与程序其余部分并发运行的较大开销操作的一组技术. 常出现异步编程的一个领域是有图形化 UI 的程序环境:当开销较大的操作完成时,冻结 UI 通常是不可接受的. 此外,异步操作对于需要并发处理多个客户端请求的服务器应用程序来说非常重要. 在实践过程中出现的异步操作的典型例子包括向服务器发送请求并等待响应.从硬盘读取数据以及运行拼写检查等开销较大的计算. 以一个含 UI 的应用程序为例. 该应用程序可以使用 Window

[2014-9-10]异步编程

异步编程 启用一个应用程序,系统在内存中创建一个新的进程,进程是一组资源,包括虚拟地址控件,文件句柄和程序启动所需要其他载体. 进程中创建一个线程内核对象,线程体现了程序的真实执行情况. 默认情况下,一个进程包括一个线程,从程序的开始一直到程序的结束. 线程池(thread pool) 刚开始,进程的线程池为空,进程使用的线程被创建,并且完成了线程的执行,它不会销毁,而是加入到进程的线程池中.如果进程需要另外一个线程,CLR会从池中还原一个线程,节省时间. 异步编程模式 1.等待-直到完成,原始

<史上最强>深入理解 Python 异步编程(上)

前言 很多朋友对异步编程都处于"听说很强大"的认知状态.鲜有在生产项目中使用它.而使用它的同学,则大多数都停留在知道如何使用 Tornado.Twisted.Gevent 这类异步框架上,出现各种古怪的问题难以解决.而且使用了异步框架的部分同学,由于用法不对,感觉它并没牛逼到哪里去,所以很多同学做 Web 后端服务时还是采用 Flask.Django等传统的非异步框架. 从上两届 PyCon 技术大会看来,异步编程已经成了 Python 生态下一阶段的主旋律.如新兴的 Go.Rust.

谈谈异步编程

目前需求中涉及到大量的异步操作,实际的页面越来越倾向于单页面应用.以后可以会使用backbone.angular.knockout等框架,但是关于异步编程的问题是首先需要面对的问题.随着node的兴起,异步编程成为一个非常热的话题.经过一段时间的学习和实践,对异步编程的一些细节进行总结. 1.异步编程的分类 解决异步问题方法大致包括:直接回调.pub/sub模式(事件模式).异步库控制库(例如async.when).promise.Generator等. 1.1 回调函数 回调函数是常用的解决异

异步编程async/await

什么是异步? 在异步程序中,程序代码不需要按照编写时的顺序严格执行,有时需要一在一个新的线程中运行一部分代码,有时无需创建新的 线程,但是为了更好的利用单个线程的能力,需要改变代码的执行顺序. 进程 启动程序时,系统会在内存中创建一个新的进程.进程是构成运行程序的资源的集合,这些资源包括虚地址空间.文件句柄和许多其他程序运行所需的东西. 线程 在进程内部,系统创建一个称为线程的内核对象,它代表了真正执行的程序.线程是执行线程的简称.一旦线程建立,系统会在Main方法的第一句开始线程的执行. 线程

深入理解 Python 异步编程(上)

http://python.jobbole.com/88291/ 前言 很多朋友对异步编程都处于"听说很强大"的认知状态.鲜有在生产项目中使用它.而使用它的同学,则大多数都停留在知道如何使用 Tornado.Twisted.Gevent 这类异步框架上,出现各种古怪的问题难以解决.而且使用了异步框架的部分同学,由于用法不对,感觉它并没牛逼到哪里去,所以很多同学做 Web 后端服务时还是采用 Flask.Django等传统的非异步框架. 从上两届 PyCon 技术大会看来,异步编程已经成