Task.FromResult<TResult> 与 Task.Run<TResult> 线程信息
using System; using System.Threading; using System.Threading.Tasks; namespace Test { class Program { static void Main() { ThreadInfo("主线程"); var task1 = TaskMethod_FromResult(); var result1 = task1.Result; Console.WriteLine("FromResult结果:" + result1); var task2 = TaskMethod_Run(); var result2 = task2.Result; Console.WriteLine("Run结果:" + result2); Console.WriteLine("\n执行完毕"); Console.ReadLine(); } private static Task<int> TaskMethod_FromResult() { ThreadInfo("TaskMethod_FromResult"); return Task.FromResult<int>(IntResult()); } private static Task<int> TaskMethod_Run() { ThreadInfo("TaskMethod_Run_外"); return Task.Run(() => { //使用后台线程池 ThreadInfo("Task-Run_内"); return IntResult(); }); } private static int IntResult() { ThreadInfo("IntResult"); return 75; } private static void ThreadInfo(string funName) { Console.WriteLine("{3}:线程Id:【{0}】是否后台线程:【{1}】是否使用线程池:【{2}】\n", Environment.CurrentManagedThreadId.ToString(), Thread.CurrentThread.IsBackground, Thread.CurrentThread.IsThreadPoolThread, funName); } } }
打印运行结果:
/* 主线程:线程Id:【8】是否后台线程:【False】是否使用线程池:【False】 TaskMethod_FromResult:线程Id:【8】是否后台线程:【False】是否使用线程池:【False】 IntResult:线程Id:【8】是否后台线程:【False】是否使用线程池:【False】 FromResult结果:75
TaskMethod_Run_外:线程Id:【8】是否后台线程:【False】是否使用线程池:【False】 Task-Run_内:线程Id:【9】是否后台线程:【True】是否使用线程池:【True】 IntResult:线程Id:【9】是否后台线程:【True】是否使用线程池:【True】 Run结果:75 执行完毕 */

浙公网安备 33010602011771号