C#:Func的同步、异步调用
using System; namespace ActionDemo
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("同步调用开始=>");
int a = SyncAdd(, );
Console.WriteLine("同步调用结束:" + a); Console.WriteLine("--------------------------"); Console.WriteLine("异步调用开始=>");
AyscAdd(, , (result) =>
{
Console.WriteLine("异步调用结果:" + result);
});
Console.WriteLine("异步调用结束"); Console.ReadLine();
} /// <summary>
/// 异步调用
/// </summary>
/// <param name="a"></param>
/// <param name="b"></param>
/// <param name="callBackAction"></param>
/// <returns></returns>
static void AyscAdd(int a, int b, Action<int> callBackAction)
{
Func<int> func = () =>
{
return new MyMath().Add(a, b);
};
func.BeginInvoke((ar) =>
{
var result = func.EndInvoke(ar);
callBackAction.Invoke(result);
},
null); } /// <summary>
/// 同步调用
/// </summary>
/// <param name="a"></param>
/// <param name="b"></param>
/// <returns></returns>
static int SyncAdd(int a, int b)
{
return new MyMath().Add(a, b);
}
} public class MyMath
{ public int Add(int a, int b)
{
System.Threading.Thread.Sleep();
return a + b;
} }
}
输出结果如下:
同步调用开始=>
同步调用结束:3
--------------------------
异步调用开始=>
异步调用结束
异步调用结果:7
//参数类型
public class CatalogInfo {} //耗时的方法
public IList<CatalogInfo> GetEntityByKey(string strId)
{
return new IList<CatalogInfo>();
} //通过异步操作防止主线程卡顿
private void IniAllCatalog()
{
//初始化Func 此类可以传多个参数,最后一个是返回参数,其余为传入参数
Func<string, IList<CatalogInfo>> Fun = GetEntityByKey;
// "1" 为传入参数 list 为返回参数
Fun.BeginInvoke("", list =>
{
//异步操作结束
var result = Fun.EndInvoke(list);
this.BeginInvoke(new Action<IList<CatalogInfo>>(BuildRootTree), result);
}, null);
} //完成异步后对不在同一个线程中的界面进行操作
private void BuildRootTree(IList<CatalogInfo> TreeRoot)
{
//ToDo:操作界面
}
C#:Func的同步、异步调用的更多相关文章
- dubbo同步/异步调用的方式
我们知道,Dubbo 缺省协议采用单一长连接,底层实现是 Netty 的 NIO 异步通讯机制:基于这种机制,Dubbo 实现了以下几种调用方式: 同步调用(默认) 异步调用 参数回调 事件通知 同步 ...
- .Net下的MSMQ(微软消息队列)的同步异步调用
一.MSMQ简介 MSMQ(微软消息队列)是Windows操作系统中消息应用程序的基础,是用于创建分布式.松散连接的消息通讯应用程序的开发工具.消息队列 和电子邮件有着很多相似处,他们都包含多个属性, ...
- jQuery同步/异步调用后台方法
$.ajax({ type: "Post", url: "UserManage.aspx/SubmitPage",//页面/方法名 data: "{' ...
- ajax 同步异步调用
- C#:Func的同步、异步调用(转)
实际开发中,对于一些耗时较长的操作,我们往往会将其封装成异步方式调用,以加速系统响应或改善用户体验,下面是一个示例: 有一个现成的类MyMath,里面有一个Add方法: 1 public class ...
- C# Func的同步、异步调用
using System; namespace ActionDemo { class Program { static void Main(string[] args) { Console.Write ...
- C#的同步和异步调用方法
同步和异步大家都明白什么意思,在这里不多介绍了. namespace ConsoleTest { class Program { static void Main(string[] args) { C ...
- python 并发编程 同步调用和异步调用 回调函数
提交任务的两张方式: 1.同步调用 2.异步调用 同步调用:提交完任务后,就在原地等待任务执行完后,拿到结果,再执行下一行代码 同步调用,导致程序串行执行 from concurrent.future ...
- Python并发编程06 /阻塞、异步调用/同步调用、异步回调函数、线程queue、事件event、协程
Python并发编程06 /阻塞.异步调用/同步调用.异步回调函数.线程queue.事件event.协程 目录 Python并发编程06 /阻塞.异步调用/同步调用.异步回调函数.线程queue.事件 ...
随机推荐
- Java IO8:IO简单总结
字节流.字符流继承关系 前几篇文章讲解了字节流.字符流的使用,不过Java提供给用户的流类远不止此,限于篇幅原因,没办法一一讲解,而且也没有必要一一讲解,就像我在写博客的时候多次提到的,有问题的时候学 ...
- $.ajax 跨域请求 Web Api
WepApi确实方便好用,没有配置文件,一个apicontroller直接可以干活了.但今天用$.ajax跨域请求的时候总是获取不到数据,用fiddler一看确实抓到了数据,但回到$.ajax函数中, ...
- JavaScript函数柯里化
函数式 JavaScript是以函数为一等公民的函数式语言.函数在JavaScript中也是一个对象(继承制Function),函数也可以作为参数传递成函数变量.最近几年函数式也因为其无副作用的特性. ...
- 教你如何完美保存Html编辑器编辑过的文本到Word中
有时候在网页上面编辑了一段文字,有图片,想保存一份到word文档里面,但是复制粘贴以后发现格式并没有保存下来,今天就来教大家如何完整的保存Html编辑器编辑过的文字(可以包含图片,但是图片必须是绝对路 ...
- L# ForUnity Helloworld的更新方法
Forunity目录结构 进入plugins 删除这三个目录 从Github代码位置copy 然后删除里面 bin obj property 项目文件等,仅留代码即可. 在editor运行test项目 ...
- 手把手教你用python打造网易公开课视频下载软件5-python生成exe程序
python程序生成exe文件,使用的是py2exe扩展包,下面写下具体的步骤: 第一步:新建conver2exe.py,内容如下: #coding:utf-8 from distutils.core ...
- Qt5.3编译错误——call of overloaded ‘max(int int)’is ambiguous
错误描述: 今天在使用Qt写一个C++函数模板的测试程序的时候,编译的时候,编译的时候出现如下错误: 错误描述为:在main函数中,进行函数max()重载时,出现(ambiguous)含糊的,不明确的 ...
- js中setTimeout()的使用bug
今天用setTimeout()时,遇到一个奇怪的现象,通过多方面的查询,最终解决了问题,这是setTimeout()设计的时候存在的一点点bug. 代码的作用主要是在三秒后自动关闭本浏览器窗口: 代码 ...
- 【原创】高性能网络编程(二):上一个10年,著名的C10K并发连接问题
1.前言 对于高性能即时通讯技术(或者说互联网编程)比较关注的开发者,对C10K问题(即单机1万个并发连接问题)应该都有所了解."C10K"概念最早由Dan Kegel发布于其个人 ...
- 【原创】NIO框架入门(四):Android与MINA2、Netty4的跨平台UDP双向通信实战
概述 本文演示的是一个Android客户端程序,通过UDP协议与两个典型的NIO框架服务端,实现跨平台双向通信的完整Demo. 当前由于NIO框架的流行,使得开发大并发.高性能的互联网服务端成为可能. ...