同步编程
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. Winfrom PictureBox 设置图片自适应

    初始状态 Bitmap bm = new Bitmap(Image.FromStream(System.Net.WebRequest.Create(new Uri(result.Result)).Ge ...

  2. python--内置模块(二) os sys pickle json

    1.os模块 常用方法: os.makedirs('dirname1/dirname2') 可生成多层递归目录 os.removedirs('dirname1') 若目录为空,则删除,并递归到上一级目 ...

  3. [转载] cassandra Unable to complete request: one or more nodes were unavailable

    今天碰到的问题跟这个一模一样,特地转过来记录一下 https://support.datastax.com/hc/en-us/articles/204893189-CQL-query-results- ...

  4. centos和ubuntu的网络属性配置

        一. centos的网络配置    1.  修改 /etc/sysconfig/network-scripts/ifcfg-IFACE:             DEVICE:此配置文件应用到 ...

  5. 几种封装javaBean的方法

    开发框架时,经常需要使用java对象(javaBean)的属性来封装程序的数据,封装javaBean的方法有很多,比如反射,内省,以及使用工具类.下面从反射开始介绍. 1.javaBean介绍: 简介 ...

  6. 架构师养成记--23.sigar使用实例

    作用是检测机器的硬件环境 注意在jdk的bin目录下加上sigar的lib目录中的文件 import java.net.InetAddress; import java.net.UnknownHost ...

  7. 题目1006:ZOJ问题(字符串处理)

    问题来源 http://ac.jobdu.com/problem.php?pid=1006 问题描述 输入一个只包含'z','o','j'三种字符的字符串,判断是否符合要求. 问题分析 分析AC的三个 ...

  8. 防止过拟合:L1/L2正则化

    正则化方法:防止过拟合,提高泛化能力 在训练数据不够多时,或者overtraining时,常常会导致overfitting(过拟合).其直观的表现如下图所示,随着训练过程的进行,模型复杂度增加,在tr ...

  9. SpringMVC初写(四)上传和下载功能的实现

    一.文件上传 流程: 导入包commons-fileuplad组件和依赖包commons-io组件 配置springmvc支持上传的组件: 启动SpringMVC注解支持 配置上传解释器 构建一个上传 ...

  10. Openerp 添加修改报表

    Report Designer 模块在生成新报表的时候是有BUG的不建议直接使用,不过我们也可以通过该插件再写简单的代码来实现新添加报表,插件安装成功后我们可以按照下列方法来添加报表 OpenERP ...