博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C# 最简单的异步委托
阅读量:6320 次
发布时间:2019-06-22

本文共 2682 字,大约阅读时间需要 8 分钟。

View Code
//异步委托using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading;namespace AsyncDelete{    class Program    {        public delegate int TaskesAWhileDelegate(int data, int ms);        static void Main(string[] args)        {            TaskesAWhileDelegate dl = TaskesAWhile;            IAsyncResult ar = dl.BeginInvoke(1, 3000, null, null);            Console.WriteLine("main主线程");            while (!ar.IsCompleted)            {                Console.Write(".");                Thread.Sleep(50);            }                        int result = dl.EndInvoke(ar);            Console.WriteLine("result:{0}", result);            Console.Read();        }        static int TaskesAWhile(int data, int ms)        {            Console.WriteLine("TaskesAWhile started");            Thread.Sleep(ms);            Console.WriteLine("TaskesAWhile completed");            return ++data;        }    }}

或:

View Code
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading; 6  7 namespace AsyncDelete 8 { 9     class Program10     {11         public delegate int TaskesAWhileDelegate(int data, int ms);12         static void Main(string[] args)13         {14             TaskesAWhileDelegate dl = TaskesAWhile;                15             16             IAsyncResult ar = dl.BeginInvoke(1, 300, new AsyncCallback(MyAsyncCallback), dl);17             Console.WriteLine("main主线程");     18             while (!ar.IsCompleted)19             {20                 Console.Write(".");21                 Thread.Sleep(50);22             }           23            24         }25         static int TaskesAWhile(int data, int ms)26         {27             Console.WriteLine("TaskesAWhile started");28             Thread.Sleep(ms);29             Console.WriteLine("TaskesAWhile completed");30             return ++data;31         }32 33         static void MyAsyncCallback(IAsyncResult asyncResult)34         {35             Console.WriteLine("MyAsyncCallback start");36             Thread.Sleep(30);37             TaskesAWhileDelegate dll = asyncResult.AsyncState as TaskesAWhileDelegate;38             Console.WriteLine("MyAsyncCallback:{0}", dll.EndInvoke(asyncResult));39         40 41             Console.WriteLine("MyAsyncCallback completed");42         }43     }44 }

 

//BegininInvoke()方法,返回类型:IAsyncResult

通过IAsyncResult获取委托执行的状态(IsCompleted)和调用委托EndInvoke()返回执行结果,

EndInvoke()方法会一直等待,直到委托完成其任务为止.

 

执行结果:

main主线程

TaskesAWhile started
.............................................................TaskesAWhile completed
result:2

转载于:https://www.cnblogs.com/xmyy/articles/2812218.html

你可能感兴趣的文章
jquery-ui Datepicker 创建 销毁
查看>>
sqoop 问题以及 小tips
查看>>
(12/24) css进阶:sass文件的打包和分离
查看>>
3.2链表----在链表中添加元素详解
查看>>
多线程编程-之并发编程:同步容器
查看>>
阅读笔记《构建之法》六
查看>>
Python3.5入门学习记录-模块
查看>>
实验课2继续2
查看>>
loadrunner关联
查看>>
m3u8格式视频文件
查看>>
linux命令英文缩写的含义(方便记忆)
查看>>
淘宝网的质量属性的六个常见属性场景
查看>>
Lua中遍历数组和table的4种方法
查看>>
【NOI2017】游戏 2-sat算法
查看>>
【最大流】【CODEVS】1993 草地排水
查看>>
Building OpenCASCADE on Debian
查看>>
面试100题之43 -- 递归和非递归二叉树遍历
查看>>
poj1797
查看>>
【操作系统】实验四 主存空间的分配和回收 截止提交时间:2016.6.17
查看>>
分享Chrome Extension(扩展程序/插件)开发的一些小经验
查看>>