using System;
using System.Runtime.Remoting.Messaging;
using System.Threading;
using System.Threading.Tasks; namespace LCS.WeiXin.Transfer
{
class Program
{
public delegate int AddHandler(int a, int b, int c); static void Main()
{
Func<int, int, int, int> fun = AddClass.Add;
// fun.BeginInvoke(1, 2, 3, CallbackFunc, null);
Console.WriteLine("===== 异步回调 AsyncInvokeTest =====");
AddHandler handler = new AddHandler(AddClass.Add);
//异步操作接口(注意BeginInvoke方法的不同!)
IAsyncResult result = handler.BeginInvoke(1, 2, 3, new AsyncCallback(CallbackFunc), "AsycState:OK");
Console.WriteLine("------继续做别的事情。。。--------");
Console.ReadKey(); } public static void CallbackFunc(IAsyncResult result)
{
//result 是“加法类.Add()方法”的返回值
//AsyncResult 是IAsyncResult接口的一个实现类,引用空间:System.Runtime.Remoting.Messaging
//AsyncDelegate 属性可以强制转换为用户定义的委托的实际类。
Func<int, int, int, int> fun = AddClass.Add;
AddHandler handler = (AddHandler)((AsyncResult)result).AsyncDelegate;
// fun.EndInvoke(result);
Console.WriteLine(handler.EndInvoke(result));
Console.WriteLine(result.AsyncState);
} public class AddClass
{
public static int Add(int a, int b, int c)
{
Console.WriteLine("\n开始计算:" + a + "+" + b + "+" + c);
Thread.Sleep(3000); //模拟该方法运行三秒
Console.WriteLine("计算完成!");
return a + b + c;
}
} static async void Async2()
{
await Task.Run(() => { Thread.Sleep(5000); Console.WriteLine("bbb"); });
Console.WriteLine("ccc");
} public static Task<int> ForTest()
{
return Task.Factory.StartNew<int>(() =>
{
Console.WriteLine("ddd");
return 1;
});
} } }

  

delegate异步的更多相关文章

  1. C# Delegate 异步调用

    namespace ConsoleApplication22 { /// /// 异步操作 /// /// /// /// //internal Func<int,int,int> int ...

  2. iOS开发——post异步网络请求封装

    IOS中有许多网络请求的函数,同步的,异步的,通过delegate异步回调的. 在做一个项目的时候,上网看了很多别人的例子,发现都没有一个简单的,方便的异步请求的封装例子.我这里要给出的封装代码,是异 ...

  3. WPF如何获得变量异步回调函数时产生的异步回调

    有这样的问题,WPF当使用异步回调,需要使用产生的异步变量中的回调函数.数据库中查询诸如异步函数来获得一DataTable.怎样传递给回调函数呢? [方案一]使用全局变量 非常easy想到的是用全局变 ...

  4. C# 异步编程1 APM模式异步程序开发

    C#已有10多年历史,单从微软2年一版的更新进度来看活力异常旺盛,C#中的异步编程也经历了多个版本的演化,从今天起着手写一个系列博文,记录一下C#中的异步编程的发展历程.广告一下:喜欢我文章的朋友,请 ...

  5. C# 异步编程1 APM 异步程序开发

    C#已有10多年历史,单从微软2年一版的更新进度来看活力异常旺盛,C#中的异步编程也经历了多个版本的演化,从今天起着手写一个系列博文,记录一下C#中的异步编程的发展历程.广告一下:喜欢我文章的朋友,请 ...

  6. WPF异步回调时回调函数如何获取异步函数产生的变量

    有这么一个问题,WPF在使用异步回调的时候,回调函数需要用到异步函数里产生的一个变量,例如异步函数里查询数据库得到了一个DataTable,如何传递给回调函数呢? [方案一]使用全局变量 很容易想到的 ...

  7. C# 异步编程学习(一)

    异步 编程 可在 等待 某个 任务 完成时, 避免 线程 的 占用, 但要 想 正确地 实现 编程, 仍然 十分 伤脑筋. . NET Framework 中, 有三种 不同 的 模型 来 简化 异步 ...

  8. C#任务Task

    完整调用 TaskCreationOptions tcOptions = TaskCreationOptions.PreferFairness | TaskCreationOptions.LongRu ...

  9. iOS开发系列-NSURLConnection

    概述 NSURLConnection是负责发送请求,建立客户端与服务端的连接.发送数据给服务器,并收集来自服务器的响应数据.其中NSURLRequest类是用来封装一个请求,包含NSURL对象.请求方 ...

随机推荐

  1. C++ 常见面试题目

    const作用 (1)可以定义const常量,具有不可变性. (2)便于进行类型检查.(而宏不会进行类型检查). (3)可以保护被修饰的东西,防止意外的修改. (4) 可以节省空间. static作用 ...

  2. 2018-2019-2 网络对抗技术 20165337 Exp1 PC平台逆向破解(BOF实验)

    实验内容 直接修改程序,跳转到getShell函数. 使用BOF攻击,覆盖返回地址,触发getShell函数. 注入一个自己的shellcode并运行. 任务一:直接修改程序,跳转到getShell函 ...

  3. Ubuntu的sources.list

    参考文章: https://blog.csdn.net/u012843189/article/details/80964287 位于/etc/apt/sources.list 其中 deb http: ...

  4. Java后端学习,推荐书籍和学习路线

    最近在学习Java和全栈开发,推荐一些有用的书籍 书架主要针对Java后端和全栈开发用的 书籍介绍 <Spring Boot 2.0企业级应用开发实战> 本书深入浅岀地讲解了 Spring ...

  5. STM32的定时器定时时间计算(计数时间和中断定时时间)

    时基单元 可编程高级控制定时器的主要部分是一个16位计数器和与其相关的自动装载寄存器.这个计数器可以向上计数.向下计数或者向上向下双向计数.此计数器时钟由预分频器分频得到. 计数器.自动装载寄存器和预 ...

  6. MySQL 远程连接问题

    使用Workbench 无法远程连接Mysql服务器提示如下错误: 查找原因: 显示只能localhost 访问. 解决方法:修改授权远程访问 create user 'root'@'%' ident ...

  7. Django By Example 总结

    从3月1号到3月23号总共24天完成了三个项目,时间很赶,学的很充实,但是憋的有点难受了,从下周开始就有上机实验了,抽不出来很多时间学课外的东西了.任务进度拖延了一个星期的进度,主要是因为我懒.... ...

  8. 使用 Vscode +PlantUml 画uml图

    什么是PlantUML PlantUML是一个快速创建UML图形的组件,官网上之所以称它是一个组件,主要是因为多数情况下我们都是在Eclipse.NetBenas.Intellijidea. Emac ...

  9. 本地电脑通过Navicat连接阿里云的Mysql数据库

    第一步:需要设置mysql的监听地址 查看mysql的监听地址: netstat -nao 如果3306(mysql默认端口)前面是0.0.0.0,则表示端口监听没有问题,如果是127.0.0.1,则 ...

  10. react native 中实现个别页面禁止截屏

    这里主要用到了原生模块,下面贴出FlagSecureModule.java的代码 package com.studyproj.flagsecure; import android.util.Log; ...