.net IAsyncResult 异步操作

?





1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

<br>        //定义一个委托

        public
delegate int DoSomething(int
count);

        //BeginInvoke 的回调函数

        private
static void Execute(IAsyncResult async)

        {

            DoSomething temp = (DoSomething)async.AsyncState;

            int
sum = temp.EndInvoke(async);

            Console.WriteLine("线程结束:值为"
+ sum);

        }

   

        /// <summary>

        /// 判断输入的整数是不是素数

        /// </summary>

        /// <param name="candidate">输入的整数</param>

        /// <returns>为素数返回true,否则返回false</returns>

        public
static bool IsPrime(int
candidate)

        {

            bool
retVal = true;

            //使用递增方式会更有效率,

            //但是在演示取消功能时,使用递减的数字会更好。

            //for (int i = 2; i < candidate / 2; i++)

            for
(int
i = candidate / 2 + 1; i > 1; i--)

            {

                if
(candidate % i == 0)

                {

                    retVal = false;

                    break;

                }

            }

            return
retVal;

        }

 

        private
static int maseggs(int
count)

        {

            int
result = 0;

            for
(int
index = 0; index < count; index++)

            {

                if
(IsPrime(index + 1))

                {

                    result++;

                }

            }

            return
result;

        }

      static
void Main(string[] args)

        {

            DoSomething hidands = new
DoSomething(maseggs);

            IAsyncResult async = hidands.BeginInvoke(100000, new
AsyncCallback(Execute), hidands);

            //这里还有100行代码        

            Console.WriteLine("消息获取成功");

 

            Console.ReadLine();

        }

.net IAsyncResult 异步操作,布布扣,bubuko.com

时间: 2024-10-10 12:19:53

.net IAsyncResult 异步操作的相关文章

使用任务Task 简化异步编程

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

Socket.BeginConnect 方法

Socket.BeginConnect 方法 (IPAddress,?Int32,?AsyncCallback,?Object) 开始一个对远程主机连接的异步请求. 主机由 IPAddress 和端口号指定. 命名空间:   System.Net.Sockets 1 [HostProtectionAttribute(SecurityAction.LinkDemand, ExternalThreading = true)] 2 public IAsyncResult BeginConnect( 3

多线程之异步编程: 经典和最新的异步编程模型,async与await

经典的异步编程模型(IAsyncResult) 最新的异步编程模型(async 和 await) 将 IAsyncInfo 转换成 Task 将 Task 转换成 IAsyncInfo 示例1.使用经典的异步编程模型(IAsyncResult)实现一个支持异步操作的类Thread/Async/ClassicAsync.cs /* * 使用经典的异步编程模型(IAsyncResult)实现一个支持异步操作的类 */ using System; using System.Collections.Ge

C#委托的异步调用

#委托的异步调用本文将主要通过"同步调用"."异步调用"."异步回调"三个示例来讲解在用委托执行同一个"加法类"的时候的的区别和利弊.   首先,通过代码定义一个委托和下面三个示例将要调用的方法: /*添加的命名空间using System.Threading;using System.Runtime.Remoting.Messaging;*/    public delegate int AddHandler(int a,i

C# 委托的三种调用示例(同步调用 异步调用 异步回调)

本文将主要通过同步调用.异步调用.异步回调三个示例来讲解在用委托执行同一个加法类的时候的的区别和利弊 首先,通过代码定义一个委托和下面三个示例将要调用的方法: public delegate int AddHandler(int a,int b); public class 加法类 { public static int Add(int a, int b) { Console.WriteLine("开始计算:" + a + "+" + b); Thread.Slee

C#委托的异步调用1

本文将主要通过“同步调用”.“异步调用”.“异步回调”三个示例来讲解在用委托执行同一个“加法类”的时候的的区别和利弊. 首先,通过代码定义一个委托和下面三个示例将要调用的方法: /*添加的命名空间using System.Threading;using System.Runtime.Remoting.Messaging;*/    public delegate int AddHandler(int a,int b);    public class 加法类    {        public

01-多线程及异步委托

一.多线程: 1.概念: 线程:是Windows任务调度的最小单位.线程是程序中的一个执行流,每个线程都有自己的专有寄存器(栈指针.程序计数器等),但代码区是共享的,即不同的线程可以执行同样的函数. 多线程:是指程序中包含多个执行流,即在一个程序中可以同时运行多个不同的线程来执行不同的任务(代码),也就是说允许单个程序创建多个并行执行的线程来完成各自的任务. 2.为什么要用多线程: ①让计算机"同时"做多件事情,节约时间. ②多线程可以让一个程序“同时”处理多个事情. ③后台运行程序,

委托线程三部曲(引用)

#异步委托(异步方法调用)一: 同步调用 : 程序顺序执行时-->调用很耗时的[方法]-->阻塞当前线程-->[方法]调用完成-->继续执行. 异步调用 : -------------------------------------------------------------------------------- 委托例子 : 自写委托如下 : public delegate String MyDelegate(String name); 微软会自动提供下面两个方法 : IAs

C#(同步调用、异步调用、异步回调)

本文将主要通过“同步调用”.“异步调用”.“异步回调”三个示例来讲解在用委托执行同一个“加法类”的时候的的区别和利弊. 首先,通过代码定义一个委托和下面三个示例将要调用的方法: public delegate int AddHandler(int a,int b);    public class 加法类    {        public static int Add(int a, int b)        {            Console.WriteLine("开始计算:&quo