在lambda表达式中使用await操作符
using System; using System.Text; using System.Collections.Generic; using System.Threading; using System.Threading.Tasks; using System.Diagnostics; namespace Test { class Program { public static string DateTime_Now_ToString() { return DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); } /// <summary> /// 在lambda表达式中使用await操作符 /// </summary> static void Main() { CurrentThreadInfo("主线程Main()的"); Task taskAwait = TaskMethod_Await(); taskAwait.Wait(); Console.WriteLine("\n执行完成" + DateTime_Now_ToString()); Console.ReadLine(); } private async static Task TaskMethod_Await() { Func<string, Task<string>> func = async name => { await Task.Delay(TimeSpan.FromMilliseconds(5000)); return GetCurrentThreadInfo(name); }; string result = await func("taskAwait"); Console.WriteLine(result); } private static string GetCurrentThreadInfo(string name) { StringBuilder builder = new StringBuilder(); builder.AppendLine(""); builder.AppendLine(String.Format("{0}线程Id:\t\t{1}", name, Thread.CurrentThread.ManagedThreadId)); builder.AppendLine(String.Format("{0}是否使用线程池:\t{1}", name, Thread.CurrentThread.IsThreadPoolThread)); builder.AppendLine(String.Format("{0}是否后台线程:\t{1}", name, Thread.CurrentThread.IsBackground)); builder.AppendLine(String.Format("{0}线程状态:\t\t{1}", name, Thread.CurrentThread.ThreadState.ToString())); builder.AppendLine(String.Format("{0}当前时间:\t\t{1}", name, DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"))); builder.AppendLine(""); return builder.ToString(); } /// <summary> /// 当前线程信息 /// </summary> private static void CurrentThreadInfo(string name) { StringBuilder builder = new StringBuilder(); builder.AppendLine(""); builder.AppendLine(String.Format("{0}线程Id:\t\t{1}", name, Thread.CurrentThread.ManagedThreadId)); builder.AppendLine(String.Format("{0}是否使用线程池:\t{1}", name, Thread.CurrentThread.IsThreadPoolThread)); builder.AppendLine(String.Format("{0}是否后台线程:\t{1}", name, Thread.CurrentThread.IsBackground)); builder.AppendLine(String.Format("{0}线程状态:\t\t{1}", name, Thread.CurrentThread.ThreadState.ToString())); builder.AppendLine(String.Format("{0}当前时间:\t\t{1}", name, DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"))); builder.AppendLine(""); Console.WriteLine(builder.ToString()); } } }
打印运行结果:
/* 主线程Main()的线程Id: 10 主线程Main()的是否使用线程池: False 主线程Main()的是否后台线程: False 主线程Main()的线程状态: Running 主线程Main()的当前时间: 2016-08-29 20:54:51 taskAwait线程Id: 12 taskAwait是否使用线程池: True taskAwait是否后台线程: True taskAwait线程状态: Background taskAwait当前时间: 2016-08-29 20:54:56 执行完成2016-08-29 20:54:56 */

浙公网安备 33010602011771号