我非常喜欢在 C# 中使用 Tasks,但是当我尝试从方法返回 Task 并且该方法将在其内部执行多个任务时,我感到困惑。那么我是否让我的方法启动一个新任务,然后在其中按顺序执行所有操作?用 .ContinueWith() 做这一切很难
例子:
public Task<string> GetSomeData(CancellationToken token)
{
return Task.Factory.StartNew(() =>
{
token.ThrowIfCancellationRequested();
var initialData = GetSomeInteger(token).Result;
return GetSomeString(initialData, token).Result;
});
}
public Task<int> GetSomeInteger(CancellationToken token)
{
return Task<int>.Factory.StartNew(() =>
{
return 4;
}, token);
}
public Task<string> GetSomeString(int value, CancellationToken token)
{
return Task<string>.Factory.StartNew(() =>
{
return value.ToString();
}, token);
}
我不确定如何编写此方法以使其正确使用任务。我想我只是觉得那里应该有一个 .ContinueWith 之类的东西。
可能修复??
public Task<string> GetSomeData(CancellationToken token)
{
return GetSomeInteger(token).ContinueWith((prevTask) =>
{
return GetSomeString(prevTask.Result, token);
}, token).Unwrap();
}