Task.Run(asyncdelegate{awaitSomethingAsync();//不会找到原始上下文}); 没有必要对SomethingAsync调用ConfigureAwait(false),因为传递给Task.Run的委托将运行在线程池线程上,堆栈上没有更高级别的用户代码,因此SynchronizationContext.Current将返回null。此外,Task.Run隐式使用TaskScheduler.Default,所以TaskScheduler.Curren...
usingSystem;usingSystem.Threading.Tasks;publicclassExample{publicstaticvoidMain(){vart = Task.Run(asyncdelegate{awaitTask.Delay(1000);return42; }); t.Wait(); Console.WriteLine("Task t Status: {0}, Result: {1}", t.Status, t.Result); } }// The example displays the following output://...
CancellationTokenSource source=newCancellationTokenSource();vart = Task.Run(asyncdelegate{awaitTask.Delay(1000, source.Token);return42; }); source.Cancel();try{ t.Wait(); }catch(AggregateException ae) {foreach(vareinae.InnerExceptions) Console.WriteLine("{0}: {1}", e.GetType().Name, e.Mes...
usingSystem;usingSystem.Threading.Tasks;publicclassExample{publicstaticvoidMain(){vart = Task.Run(asyncdelegate{awaitTask.Delay(1000);return42; }); t.Wait(); Console.WriteLine("Task t Status: {0}, Result: {1}", t.Status, t.Result); } }// The example displays the following output://...
usingSystem;usingSystem.Threading.Tasks;publicclassExample{publicstaticvoidMain(){vart = Task.Run(asyncdelegate{awaitTask.Delay(1000);return42; }); t.Wait(); Console.WriteLine("Task t Status: {0}, Result: {1}", t.Status, t.Result); } }// The example displays the following output://...
returnTask.Run( => Sleep(millisecondsTimeout)); } 然后看第二种实现方式,这种实现方式没有使用原有的 Sleep 方法,而是重写内部实现以消耗更少的资源: publicTaskSleepAsync(intmillisecondsTimeout) { TaskCompletionSource<bool> tcs =null; vart =newTimer(delegate{ tcs.TrySetResult(true); },null, –1,-...
usingSystem;usingSystem.Threading.Tasks;publicclassExample{publicstaticvoidMain(){vart = Task.Run(asyncdelegate{awaitTask.Delay(1000);return42; }); t.Wait(); Console.WriteLine("Task t Status: {0}, Result: {1}", t.Status, t.Result); } }// The example displays the following output://...
publicTaskSleepAsync(intmillisecondsTimeout) { returnTask.Run(()=>Sleep(millisecondsTimeout)); } 然后看第二种实现方式,这种实现方式没有使用原有的Sleep()方法,而是重写内部实现以消耗更少的资源: publicTaskSleepAsync(intmillisecondsTimeout) { TaskCompletionSource<bool>tcs=null; vart=newTimer(delegate{tcs...
It is called directly from the application thread, and is called from the Action delegate passed to the Run(Action) method. C# Copy using System; using System.Threading; using System.Threading.Tasks; public class Example { public static void Main() { ShowThreadInfo("Application"); var t ...
usingSystem;usingSystem.Threading.Tasks;publicclassExample{publicstaticvoidMain(){vart = Task.Run(asyncdelegate{awaitTask.Delay(1000);return42; }); t.Wait(); Console.WriteLine("Task t Status: {0}, Result: {1}", t.Status, t.Result); } }// The example displays the following output://...