希望在编程上有些许提高所以 最近连续2篇博客都在说明多线程和异步编程的使用,异步和多线程之间区别请自行百度,因为理解不是特别透彻就不在叙述以免误导大家,这里写下新研究整理 task 和 await 的异步编程使用
调用子方法和耗时方法如下
/// <summary>
/// 有返回值异步方法
/// </summary>
/// <returns></returns>
static async Task<int> HaveReturnAsync()
{
await Task.Run(() => Method1("HaveReturnAsync")); // part_001
//Task t1 = new Task(() => sss());
//t1.Start();
Console.WriteLine("ccc"); //part_003
return 10;
}
/// <summary>
/// 耗时输出方法
/// </summary>
/// <param name="name"></param>
static void Method1(string name)
{
string temp1 = ""+name+"_1";
string temp2 = "" + name + "_2";
Console.WriteLine(temp1);
Thread.Sleep(500);
Console.WriteLine(temp2);
}
调用主方法
//无返回值
//Async2();
//Console.WriteLine("Async2-Bakc");
// 有返回值
var ll = HaveReturnAsync();
Console.WriteLine("aaa"); //part_002
Console.WriteLine("llValue:" + ll.Result); // part_003
Console.ReadKey();
执行结果

从执行结果可以看出在执行HaveReturnAsync:async Task<int> HaveReturnAsync() 主线程不会等待会直接输出//part_002 ,但在HaveReturnAsync() 方法体内 会等待 Method1 方法执行完
再输出 Console.WriteLine("ccc"); //part_003,看到这里大家会对 await 有一定了解了吧,从整体来看 主线程 调用HaveReturnAsync 是异步,在HaveReturnAsync() 方法体内 调用 Method1 用await 使其会等待Method1 执行完后
,再执行下面代码是同步。希望上面描述对大家对异步编程有初步了解,如有疑问可以一起讨论。
原文:http://www.cnblogs.com/liyanbofly/p/7919677.html