【发布时间】:2014-12-19 01:13:13
【问题描述】:
在async 方法中处理null 任务的最佳方法是什么?
public class MyClass
{
private readonly Task task;
public MyClass(Task task) { this.task = task; }
public async Task Execute()
{
if (task == null)
{
await Task.Yield(); /* Is this the best way? */
return;
}
await task;
}
}
【问题讨论】:
-
你想做什么?
-
我会说
public MyClass(Task task){if (task == null)throw new ArgumentNullException("task");..} -
只是不要接受空任务。顺便说一句,你想做什么?包装一个任务并添加一个执行方法是非常可疑的,并且可能是代码异味 - 试图“控制”任务何时开始或执行,而没有理由这样做。 Task 本身是一个在其委托启动和执行时进行抽象的类,您无需在其之上添加另一个类来做同样的事情。
-
我试图了解在异步方法中处理可能为空的任务的最佳实践。出于讨论的目的,假设我继承了一个可能允许空任务的方法,并且在构造函数中添加空检查不是一种选择。
标签: c# .net task-parallel-library async-await