as7*_*s74 4 c# task-parallel-library async-await
使用异步任务方法时,需要在方法之前放置等待.我需要以非UI阻塞方式执行代码,并且不想等待.我唯一的想法是使用:
private void TaskFactory()
{
CancellationTokenSource token_TaskFactory = new CancellationTokenSource();
ParallelOptions parOpts = new ParallelOptions();
parOpts.CancellationToken = token_TaskFactory.Token;
parOpts.MaxDegreeOfParallelism = Environment.ProcessorCount;
TaskCreationOptions atp = new TaskCreationOptions();
atp = TaskCreationOptions.PreferFairness;
Task TaskFactory = Task.Factory.StartNew(() =>
{
if (!token_TaskFactory.IsCancellationRequested)
{
Thread.Sleep(5000);
}
else
{
}
}, token_TaskFactory.Token, atp, TaskScheduler.Default);
}
Run Code Online (Sandbox Code Playgroud)
使用异步任务方法时,需要在方法之前放置等待.
处理此问题的正确方法是await使用方法,并调用方法async Task或async Task<TResult>.这会在async您的代码中传递出级联效果.
在UI的应用程序,你通常会在一个事件处理程序,它结了不能是async Task,在这一点上,你可以使事件处理程序async void.
如果您通过制作常规方法来欺骗此过程async void,则会导致其他问题,尤其是错误处理和可组合性(即单元测试).请参阅我的MSDN文章或关于为什么应该避免的许多讨论之一async void.
我需要以非UI阻塞方式执行代码,并且不想等待.
你为什么不"想"使用await?你有异步代码,你需要以非阻塞的方式运行,而这正是await它的作用!
| 归档时间: |
|
| 查看次数: |
9225 次 |
| 最近记录: |