c#方法转异步例子
2018-06-22 07:27:07来源:未知 阅读 ()
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);
}
}
}
}
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:MVC初级教程(三)
- ASP.NET使用Ajax返回Json对象的方法 2020-03-23
- SqlDataReader指定转换无效的解决方法 2020-03-23
- .net下log4net使用方法详解 2020-03-19
- asp.net定点执行任务的方法 2020-03-18
- .NET随机数函数的生成方法 2020-03-18
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash
