标签:ace 工厂 技术分享 tle get factory com public sleep
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading; using System.Threading.Tasks; namespace ATLearn { /// <summary> /// Guid工厂 /// </summary> static class GuidFactory { //private static ThreadLocal<string> _localGuid = new ThreadLocal<string>(); private static AsyncLocal<string> _localGuid = new AsyncLocal<string>(); public static string CurrentGuid { get { if (_localGuid.Value == null) { _localGuid.Value = Guid.NewGuid().ToString(); } return _localGuid.Value; } } } class APP { private Task<int> awaitFunction(int taskId) { return Task.Factory.StartNew((obj) => { int itaskId = (int)obj; Console.WriteLine(string.Format("taskId: {0} Await! threadId: {1} Guid: {2}", taskId, Thread.CurrentThread.ManagedThreadId, GuidFactory.CurrentGuid)); Thread.Sleep(2000); return itaskId; }, (object)taskId); } private async void asyncFunction(int taskId) { Console.WriteLine(string.Format("taskId: {0} Start! threadId: {1} Guid: {2}", taskId, Thread.CurrentThread.ManagedThreadId, GuidFactory.CurrentGuid)); int num = await awaitFunction(taskId); Console.WriteLine(string.Format("taskId:{0} End! threadId: {1} Guid: {2}", taskId, Thread.CurrentThread.ManagedThreadId, GuidFactory.CurrentGuid)); } public APP() { for (int i = 1; i <= 2; ++i) { asyncFunction(i); } while (true) { Thread.Sleep(1000); } } } class Program { static void Main(string[] args) { APP App = new APP(); } } }
可见await会开新线程
标签:ace 工厂 技术分享 tle get factory com public sleep
原文地址:http://www.cnblogs.com/jimaojin/p/7473136.html