c#方法转异步例子
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading;
- using System.Threading.Tasks;
- namespace 亚信电子商务
- {
- public class Program2
- {
- public static void Main(string[] args)
- {
- Console.WriteLine("主线程1");
- AsyncTest.ToAsync(()=> {
- Thread.Sleep(3000);
- Console.WriteLine("让我用新的线程执行吧,主线程你做你的事吧");
- }, () => { Console.WriteLine("回调"); });
- AsyncTest.ToAsync<string>(() => {
- Thread.Sleep(1000);
- return "女猪脚和男猪脚结婚了";
- }, p => { Console.WriteLine("回调结果:"+ p); });
- Console.WriteLine("主线程2");
- Console.ReadLine();
- }
- }
- /// <summary>
- /// 将一个普通方法转为异步方法
- /// </summary>
- public class AsyncTest
- {
- /// <summary>
- /// 把一个普通无参,无返回值的方法转为异步方法
- /// </summary>
- /// <param name="srcAction">要转的方法</param>
- /// <param name="callBack">回调方法</param>
- public static async Task ToAsync(Action srcAction,Action callBack)
- {
- //定义一个异步无返回值的方法,下面写法可能有点绕
- Func<Task> task = () =>
- {
- return Task.Run(() =>
- {
- srcAction();
- });
- };
- await task();
- if (callBack != null)
- {
- callBack();
- }
- }
- /// <summary>
- /// 把一个无参有返回值的方法转为异步方法
- /// </summary>
- /// <typeparam name="T">泛型模板类型</typeparam>
- /// <param name="srcFunc">被转的源方法</param>
- /// <param name="callBack">回调</param>
- public static async Task ToAsync<T>(Func<T> srcFunc, Action<T> callBack)
- {
- Func<Task<T>> task = () => {
- return Task<T>.Run(() => {
- return srcFunc();
- });
- };
- var result = await task();
- if (callBack != null)
- {
- callBack(result);
- }
- }
- }
- }
c#方法转异步例子的更多相关文章
- MVC4方法行为过滤器例子(用户登录)
在Model文件夹下添加一个类MyActionFilterAttribute继承于ActionFilterAttribute: using System; using System.Collectio ...
- Spring中@Async注解实现“方法”的异步调用
原文:http://www.cnblogs.com/zhengbin/p/6104502.html 简单介绍: Spring为任务调度与异步方法执行提供了注解支持.通过在方法上设置@Async注解,可 ...
- MVC验证09-使用MVC的Ajax.BeginForm方法实现异步验证
原文:MVC验证09-使用MVC的Ajax.BeginForm方法实现异步验证 MVC中,关于往后台提交的方法有: 1.Html.BeginForm():同步 2.Ajax.BeginForm():异 ...
- C# 将某个方法去异步执行
C# 将某个方法去异步执行 Task.Run(() => { string msgerror = SendPhoneCode.NewSendByTemplate(apply.PhoneNum, ...
- then()方法是异步执行
then()方法是异步执行 就是当.then()前的方法执行完后再执行then()内部的程序 这样就避免了,数据没获取到等的问题
- php 不等待返回的实现方法(异步调用)
PHP异步执行的常用方式常见的有以下几种,可以根据各自优缺点进行选择: 1.客户端页面采用AJAX技术请求服务器优点:最简单,也最快,就是在返回给客户端的HTML代码中,嵌入AJAX调用,或者,嵌入一 ...
- 异步 HttpContext.Current实现取值的方法(解决异步Application,Session,Cache...等失效的问题)
在一个项目中,为了系统执行效率更快,把一个经常用到的数据库表通过dataset放到Application中,发现在异步实现中每一次都会出现HttpContext.Current为null的异常,后来在 ...
- AsyncContext的startAsync()方法开启异步
Servlet 3.0的异步处理支持特性,使Servlet 线程不再需要一直阻塞,直到业务处理完毕才能再输出响应,最后才结束该 Servlet 线程.在接收到请求之后,Servlet 线程可以将耗时的 ...
- 【转】爬虫的一般方法、异步、并发与框架scrapy的效率比较
该文非原创文字,文字转载至 jclian91 链接:https://www.cnblogs.com/jclian91/p/9799697.html Python爬虫的N种姿势 问题的由来 ...
随机推荐
- bgfx入门练习2——找出DX,OpenGL驱动切换实现原理
找到驱动切换的代码,自然而然就要找实现的位置了,简单搜了下,原来是GLSL Shader字节码转换到HLSL字节码,正好和Klayge做了相反的工作. 时间上似乎也差不多,Klyage是2014年搞的 ...
- python模块:random
"""Random variable generators. integers -------- uniform within range sequences ----- ...
- 字符串相似度算法——Levenshtein Distance算法
Levenshtein Distance 算法,又叫 Edit Distance 算法,是指两个字符串之间,由一个转成另一个所需的最少编辑操作次数.许可的编辑操作包括将一个字符替换成另一个字符,插入一 ...
- PLL与PHY的连接:通道绑定或者不绑定
用到的术语: clock skew的产生 延时与时钟线的长度及被时钟线驱动的时序单元的负载电容.个数有关 由于时钟线长度及负载不同,导致时钟信号到达相邻两个时序单元的时间不同 于是产生所谓的clock ...
- win7 装docker
Win7安装Docker 主要是装这个 ,官网没有win7版本 Docker Toolbox on Windows
- Python自动化开发 - MySQL(一)
本节内容 一.概述 二.下载安装 三.数据库操作 四.数据表操作 五.表内容操作 一.概述 1.什么是数据库 ? 答:数据的仓库,如:在ATM的示例中我们创建了一个 db 目录,称其为数据库 2.什么 ...
- 调用opencv相关函数,从视频流中提取出图片序列&&&&jpg图片序列,转化成avi格式视频
/************************ @HJ 2017/3/30 参考http://blog.sina.com.cn/s/blog_4b0020f301010qcz.html修改的代码 ...
- string Type
Notes from C++ Primer Operations Operations of string support lots of operations of sequential conta ...
- 75道经典AI面试题,我就想把你们安排的明明白白的!(含答案)
基础知识(开胃菜) Python 1.类继承 有如下的一段代码: class A(object): def show(self): print 'base show' class B(A): def ...
- Mac 安装微软雅黑字体
https://www.jianshu.com/p/d8c34fff3483 1.找一台Windows电脑,打开字体文件夹C:\Windows\Fonts. 2.搜索"Calibri.微软雅 ...