delegate异步
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异步的更多相关文章
- C# Delegate 异步调用
namespace ConsoleApplication22 { /// /// 异步操作 /// /// /// /// //internal Func<int,int,int> int ...
- iOS开发——post异步网络请求封装
IOS中有许多网络请求的函数,同步的,异步的,通过delegate异步回调的. 在做一个项目的时候,上网看了很多别人的例子,发现都没有一个简单的,方便的异步请求的封装例子.我这里要给出的封装代码,是异 ...
- WPF如何获得变量异步回调函数时产生的异步回调
有这样的问题,WPF当使用异步回调,需要使用产生的异步变量中的回调函数.数据库中查询诸如异步函数来获得一DataTable.怎样传递给回调函数呢? [方案一]使用全局变量 非常easy想到的是用全局变 ...
- C# 异步编程1 APM模式异步程序开发
C#已有10多年历史,单从微软2年一版的更新进度来看活力异常旺盛,C#中的异步编程也经历了多个版本的演化,从今天起着手写一个系列博文,记录一下C#中的异步编程的发展历程.广告一下:喜欢我文章的朋友,请 ...
- C# 异步编程1 APM 异步程序开发
C#已有10多年历史,单从微软2年一版的更新进度来看活力异常旺盛,C#中的异步编程也经历了多个版本的演化,从今天起着手写一个系列博文,记录一下C#中的异步编程的发展历程.广告一下:喜欢我文章的朋友,请 ...
- WPF异步回调时回调函数如何获取异步函数产生的变量
有这么一个问题,WPF在使用异步回调的时候,回调函数需要用到异步函数里产生的一个变量,例如异步函数里查询数据库得到了一个DataTable,如何传递给回调函数呢? [方案一]使用全局变量 很容易想到的 ...
- C# 异步编程学习(一)
异步 编程 可在 等待 某个 任务 完成时, 避免 线程 的 占用, 但要 想 正确地 实现 编程, 仍然 十分 伤脑筋. . NET Framework 中, 有三种 不同 的 模型 来 简化 异步 ...
- C#任务Task
完整调用 TaskCreationOptions tcOptions = TaskCreationOptions.PreferFairness | TaskCreationOptions.LongRu ...
- iOS开发系列-NSURLConnection
概述 NSURLConnection是负责发送请求,建立客户端与服务端的连接.发送数据给服务器,并收集来自服务器的响应数据.其中NSURLRequest类是用来封装一个请求,包含NSURL对象.请求方 ...
随机推荐
- php json数据 入库时 转义字符丢失
转义字符入库后消失,导致出库后无法反转义 解决办法 增加 addslashes函数 if (empty($result)) { $data['activitiesid'] = $param['act ...
- [Kubernetes]PV,PVC,StorageClass之间的关系详解
在Kubernetes中,容器化一个应用比较麻烦的地方莫过于对其"状态"的管理,而最常见的"状态",莫过于存储状态. 在[Kubernetes]深入理解Stat ...
- SQL Server 数据库备份和还原
一.SQL命令 备份BACKUP DATABASE TestDb TO DISK='d:\TestDb.bak'还原RESTORE DATABASE TestDb FROM DISK='d:\Test ...
- c# 利用IEqualityComparer接口去除DataTable重复数据
IEqualityComparer主要适用于定义方法以支持对象的相等比较.可以实现集合的自定义相等比较.即,您可以创建自己的相等定义,并指定此定义与接受 IEqualityComparer 接口的集合 ...
- 删除Win10资源管理器中的3D对象/音乐/视频文件夹
Win10如何删除资源管理器中的3D对象/音乐/视频等文件夹?使用Win10系统的用户都知道,打开此电脑之后,资源管理上面会显示文档/音乐/视频等7个文件夹,一些用户认为很少使用到它们,想要除之而后快 ...
- iOS端临近封包时要做哪些事情?
iOS封包前的注意事项: 0.功能测试,打点测试都已OK 1.创建case,使用master执行此轮case,修改版本号 2.建议使用各个系统的机型,如8,9,10,11,12, iPad等 3.ma ...
- JS一直是单线程,异步(定时器,ajax请求等)是由浏览器来实现的!(转)
原文地址:https://www.cnblogs.com/woodyblog/p/6061671.html 1.自己画的一张示意图 2.DOM一变化,界面就立刻重新渲染,效率必然很低,所以浏览器的机制 ...
- 20165314《网络对抗技术》week1 Exp0 Kali安装
系统安装.网络配置 我的Kali安装是按照https://baijiahao.baidu.com/s?id=1610754152224855428&wfr=spider&for=pc进 ...
- 使用token做认证
对当前用户,使用base64加密token,再解密token,但是不如JWT加密安全 import time import base64 import hmac def generate_token( ...
- STM32的定时器定时时间计算(计数时间和中断定时时间)
时基单元 可编程高级控制定时器的主要部分是一个16位计数器和与其相关的自动装载寄存器.这个计数器可以向上计数.向下计数或者向上向下双向计数.此计数器时钟由预分频器分频得到. 计数器.自动装载寄存器和预 ...