同步编程
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
} //同步执行
private void btnExcu_Click(object sender, EventArgs e)
{
lab1.Text = add(,).ToString();
lab2.Text = jianf(, ).ToString();
} private int add(int a,int b)
{
return a + b; } private int jianf(int a,int b)
{
//调用thread类中的Sleep()方法来给方法2延迟5000毫秒
System.Threading.Thread.Sleep();
return a * b; }

效果如下:

  

代码分析:

    当我点击同步显示的时候,由于方法2延迟了5000毫秒,所有label1和label2会等待5000毫秒后在一同显示,其他的按钮点之没有反应。

   异步显示

 public partial class Form1 : Form
{
//【1】定义委托
public delegate int adddelegate(int a,int b);
public Form1()
{
InitializeComponent();
} //同步执行
private void btnExcu_Click(object sender, EventArgs e)
{
lab1.Text = add(,).ToString();
lab2.Text = jianf(, ).ToString();
}
//【2】根据委托定义委托方法
private int add(int a,int b)
{
return a + b; } private int jianf(int a,int b)
{
//调用thread类中的Sleep()方法来给方法2延迟5000毫秒
System.Threading.Thread.Sleep();
return a * b; } //【3】异步调用
private void btnExcu2_Click(object sender, EventArgs e)
{
//通过委托异步调用方法
//委托类型的BeginInvoke(输入和输出变量)
//第一个参数10 表示委托方法的实参。
//第二个参数Callback:回调函数,表示异步调用后自动调用的函数
//第三个参数AsyncState:用户向回调函数提供参数信息
//返回值:IAsyncResult:异步操作状态接口,封装了异步执行的参数 //创建委托变量,并指向方法
adddelegate my = jianf;
//异步调用任务 需要用到接口IAsyncResult
IAsyncResult resul = my.BeginInvoke(,,null,null);
this.lab1.Text = "正在计算,请稍等..."; //同时执行其他任务
this.lab2.Text = add(,).ToString();
//获取异步执行的结果 EndInvoke返回一个int类型 参数是接口
//委托类型的EndInvoke()方法:借助于IAsyncResult接口对象,不断的查询异步调用是否结束。
int re= my.EndInvoke(resul);
this.lab1.Text = re.ToString(); }
}

C#同步、异步编程的更多相关文章

  1. .Net Core WebAPI 基于Task的同步&异步编程快速入门

    .Net Core WebAPI 基于Task的同步&异步编程快速入门 Task.Result async & await 总结 并行任务(Task)以及基于Task的异步编程(asy ...

  2. JS中的同步异步编程

    首先我们先看看同步与异步的定义,及浏览器的执行机制,方便我们更好地理解同步异步编程. 浏览器是多线程的,JS是单线程的(浏览器只分配一个线程来执行JS)   进程大线程小:一个进程中包含多个线程,例如 ...

  3. .Net异步编程知多少

    1. 引言 最近在学习Abp框架,发现Abp框架的很多Api都提供了同步异步两种写法.异步编程说起来,大家可能都会说异步编程性能好.但好在哪里,引入了什么问题,以及如何使用,想必也未必能答的上来. 自 ...

  4. .Net异步编程 z

    1. 引言 最近在学习Abp框架,发现Abp框架的很多Api都提供了同步异步两种写法.异步编程说起来,大家可能都会说异步编程性能好.但好在哪里,引入了什么问题,以及如何使用,想必也未必能答的上来. 自 ...

  5. [.NET] 怎样使用 async & await 一步步将同步代码转换为异步编程

    怎样使用 async & await 一步步将同步代码转换为异步编程 [博主]反骨仔 [出处]http://www.cnblogs.com/liqingwen/p/6079707.html  ...

  6. 【转】C#异步编程及其同步机制

    C#异步编程及其同步机制 本篇文章涵盖一下几部分内容: 1. 什么是异步编程,为什么会需要异步编程 2. .NET下的异步编程及其发展 3. .NET线程同步机制及线程间数据封送 4. 异步模式 5. ...

  7. C#异步编程(async and await)及异步方法同步调用

    1.什么是异步? 异步操作通常用于执行完成时间可能较长的任务,如打开大文件.连接远程计算机或查询数据库=异步操作在主应用程序线程以外的线程中执行.应用程序调用方法异步执行某个操作时,应用程序可在异步方 ...

  8. Python并发编程之同步\异步and阻塞\非阻塞

    一.什么是进程 进程: 正在进行的一个过程或者说一个任务.而负责执行任务则是cpu. 进程和程序的区别: 程序仅仅只是一堆代码而已,而进程指的是程序的运行过程. 需要强调的是:同一个程序执行两次,那也 ...

  9. linux基础编程:IO模型:阻塞/非阻塞/IO复用 同步/异步 Select/Epoll/AIO(转载)

      IO概念 Linux的内核将所有外部设备都可以看做一个文件来操作.那么我们对与外部设备的操作都可以看做对文件进行操作.我们对一个文件的读写,都通过调用内核提供的系统调用:内核给我们返回一个file ...

  10. C#:异步编程和线程的使用(.NET 4.5 ),异步方法改为同步执行

    摘自:http://www.codeproject.com/Articles/996857/Asynchronous-programming-and-Threading-in-Csharp-N(葡萄城 ...

随机推荐

  1. C语言--第0次作业;

    第零次作业 1.你对网络专业或者计算机专业了解是怎样? 在高考之前,我就确定了自己的大学专业将会选择计算机方面.我认为计算机专业就业前景比较好,计算机行业发展也非常快,学科实践与创新能力也比较强,在当 ...

  2. DOS文件操作命令

    内部命令 COPY---文件固执命令 格式:COPY [源盘:][路径]<源文件名> [目标盘][路径]<目标文件名> 拷贝一个或多个文件到指定盘上 1)COPY是文件对文件的 ...

  3. | 与|| ,& 与&&

    & 既是位运算符又是逻辑运算符,&的两侧可以是int,也可以是boolean表达式 举例:12&5 的值是多少?答:12转成二进制数是1100(前四位省略了),5转成二进制数是 ...

  4. 初识Mybatis框架

    mybatis框架  主要是对数据库进行操作的 编写sql语句 使我们对数据库的crud操作更加简洁方便!! 1.使用mybatis框架 进行第一个项目 查询数据库 并返回数据 :(简单) (1)搭建 ...

  5. 使用textarea标签代替input标签可以实现输入框的大小调节,自动换行,滚动条显示

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  6. Django2.0 URL配置详解

    转自:https://www.cnblogs.com/feixuelove1009/p/8399338.html Django2.0发布后,很多人都拥抱变化,加入了2的行列. 但是和1.11相比,2. ...

  7. AI 的下一个重大挑战:理解语言的细微差别

    简评:人类语言非常博大精妙,同一句话在不同的语境下,就有不同的含义.连人类有时候都不能辨别其中细微的差别,机器能吗?这就是人工智能的下一个巨大挑战:理解语言的细微差别.本文原作者是 Salesforc ...

  8. HDU-6125-Friend-Graph-2017CCPC网络赛(图论,拉姆齐定理-组合数学)

    Friend-Graph Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) To ...

  9. MyBatisSystemException->BindingException: Parameter 'xxx' not found. Available parameters are [arg1, arg0, param1, param2]

    最近在使用Spring boot+mybatis做新的基础框架,结果碰到如下问题: 1 org.mybatis.spring.MyBatisSystemException: nested except ...

  10. 深入理解map系列--HashMap(一)

    Map系列之HashMap(源码基于java8) HashMap是我们最常用的map实现之一,这篇文章将会介绍HashMap内部是如何工作的,以及内部的数据结构是怎样的 一.数据结构简图 二.源码解析 ...