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种姿势 问题的由来 ...
随机推荐
- python模块:xml
"""Core XML support for Python. This package contains four sub-packages: dom -- The W ...
- Singleton Summary
Java Singleton: Singleton pattern restricts the instantiation of a class and ensures that only one i ...
- 7.AOP编程
注解和xml混合使用 1.将所有的bean都配置xml中 <bean id="" class=""> 2.将所有的依赖都使用注解 @Autowire ...
- git 删除本地分支、远程分支、本地回滚、远程回滚
一. git 删除分支 1. git 删除本地分支 git branch -D branchname 2. git 删除远程分支 git push origin :branchname (origin ...
- tomcat 启动报错org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalin
IDEA tomcat 7.0.53 严重: ContainerBase.addChild: start: org.apache.catalina.LifecycleException: Failed ...
- 优化以及bug
优化1:节流函数2:城市查询时,之前用事件(拿到DOM中innerHTML,后触发事件),后改用v-model双向绑定:应该是更符合数据驱动.3:使用localstorage等本地存储,如果用户关闭本 ...
- Maven 项目中的 pom.xml 文件内容说明
下面是一个比较全面的 POM 文件的结构,当然常用的并不需要这么多配置,视自己的项目需求而定. <project xmlns="http://maven.apache.org/POM/ ...
- Java 中 & | ^ 运算符的简单使用
背景 今天碰到了代码中的按位与运算,复习一下,先列一个各个进制数据表. 顺便复习一下十进制转二进制的计算方式: 接下来解释下这三个运算符: & 按位与,都转为二进制的情况下,同为1则为1,否则 ...
- Mybatis框架一:搭建测试
Mybatis框架不再介绍: 在JDBC中存在一些问题: 1.频繁连接和释放资源浪费内存 2.编码完成后不便于维护 于是产生了简化数据库操作的框架:Hibernate.Mybatis等等,这里介绍My ...
- .NET手记-Autofac进阶(传递注册参数 Passing Parameters to Register)
当你注册组件时,可以为组件服务传入一系列参数,用于服务解析时使用. 可使用的参数类型 Available Parameter Types Autofac提供了集中参数匹配类别: NamedParame ...