//定义一个委托
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 异步操作的更多相关文章

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

    经典的异步编程模型(IAsyncResult) 最新的异步编程模型(async 和 await) 将 IAsyncInfo 转换成 Task 将 Task 转换成 IAsyncInfo 示例1.使用经 ...

  2. 多线程之异步编程: 经典和最新的异步编程模型, IAsyncInfo 与 Task 相互转换

    经典的异步编程模型(IAsyncResult) 最新的异步编程模型(async 和 await) 将 IAsyncInfo 转换成 Task 将 Task 转换成 IAsyncInfo 示例1.使用经 ...

  3. 委托(delegate)的三种调用方式:同步调用,异步调用,异步回调(转载)

    下面为即将被调用的方法: public delegate int AddHandler(int a,int b); public class 加法类 { public static int Add(i ...

  4. 重新想象 Windows 8 Store Apps (44) - 多线程之异步编程: 经典和最新的异步编程模型, IAsyncInfo 与 Task 相互转换

    [源码下载] 重新想象 Windows 8 Store Apps (44) - 多线程之异步编程: 经典和最新的异步编程模型, IAsyncInfo 与 Task 相互转换 作者:webabcd 介绍 ...

  5. C#委托的异步调用1

    本文将主要通过“同步调用”.“异步调用”.“异步回调”三个示例来讲解在用委托执行同一个“加法类”的时候的的区别和利弊. 首先,通过代码定义一个委托和下面三个示例将要调用的方法: /*添加的命名空间 u ...

  6. C#委托的异步调用

    本文将主要通过“同步调用”.“异步调用”.“异步回调”三个示例来讲解在用委托执行同一个“加法类”的时候的的区别和利弊. 首先,通过代码定义一个委托和下面三个示例将要调用的方法: /*添加的命名空间 u ...

  7. 多线程与Socket编程

    一.死锁 定义: 指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去.此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁 ...

  8. C# 异步和委托学习

    IAsyncResult是接口: IAsyncResult 异步设计模式通过名为 BeginOperationName 和 EndOperationName 的两个方法来实现原同步方法的异步调用,如 ...

  9. C#委托的异步调用【转】

    本文将主要通过“同步调用”.“异步调用”.“异步回调”三个示例来讲解在用委托执行同一个“加法类”的时候的的区别和利弊. 首先,通过代码定义一个委托和下面三个示例将要调用的方法: ); //模拟该方法运 ...

随机推荐

  1. mysql数据库备份脚本

    mysql数据库备份脚本 mysql数据库分库备份脚本:[root@localhost tmp]# cat mysql.sh #!/bin/bash USER=root PASSWORD=joy4yo ...

  2. MVC FileDownLoad

    public ActionResult MatDownload() { string ShopId = Session["ShopId"].ToString(); var self ...

  3. linux启动自动挂载分区和/etc/fstab简单修复

    让后加的分区能够启动时自动挂载,需要把配置写入文件 /etc/fstab vi /etc/fstab UUID=3f5859e0-592f-42cd-b533-570422fb85be   / ext ...

  4. videojs集成--播放rtmp流

    之前说到已经把流推送过来了,这时候就可以使用videojs来进行显示播放. 首先要先有一个文件,那就是video-js.swf 因为,这种播放方式html已经不能很好的进行播放了,需要用到flash来 ...

  5. mapred.JobClient: No job jar file set. User classes may not be found. See JobConf(Class) or JobConf#setJar(String).

    报错详情: WARN mapred.JobClient: No job jar file set.  User classes may not be found. See JobConf(Class) ...

  6. 第八章 数据库连接JDBC(待续)

    ············

  7. 1.2celery的安装

    我们可以使用python的包管理器pip来安装: pip install -U Celery 也可从官方直接下载安装包:https://pypi.python.org/pypi/celery/ tar ...

  8. Android使用简单的Service

    首先要自定义一个Service,设定它在后台要干什么. public class MyService extends Service { @Nullable @Override public IBin ...

  9. HTTP 2 的新特性你 get 了吗?

    导语 HTTP/2 的主要设计思想应该都是源自 Google的 SPDY 协议,是互联网工程任务组 ( IETF ) 对谷歌提出的 SPDY 协议进行标准化才有了现在的 HTTP/2 .下面我们直奔主 ...

  10. 关于python3 发送邮件

    一:发送文本信息 from email.mime.text import MIMEText from email.header import Header from smtplib import SM ...