例如,让我们说我正在写与下面的签名(C#4所以没有异步关键字)的方法:创建表示一系列连续任务的任务
public Task Refresh();
它会调用一个方法(它也返回Task
)执行通信工作,然后运行任务延续以基于检索到的数据更新某些内部状态。 e.g:
public Task Refresh()
{
Task<MyData> commsTask = datasource.LoadData();
Task handleDataTask = commsTask.ContinueWith(HandleNewData);
return ?;
}
如果我返回handleDataTask
它的完成状态正确跟踪“刷新”操作的结果,但它不正确地报告它的启动状态。
我可以将它们都包装在一个新的Task.Factory.StartNew
中,并将它们作为子任务创建,但是为了链接某些任务延续而使用新线程似乎很浪费。
当然,有一个整洁有效的方式来与TPL做到这一点?
你为什么关心国家? – svick 2012-04-15 10:26:52
这样的实现匹配方法签名的隐式文档?我不知道,问我的方法的消费者。 “Task.Status”属性可能有100多种用途,我所知道的是我的方法应该返回一个正确跟在它的文档后面的“Task”。 – Tyson 2012-04-15 10:34:57