在使用C#中的Tasks方面,我感觉还算熟练,但当我尝试从一个方法中返回一个Task并让该方法执行多个任务时,我感到困惑。那么,我应该在我的方法中启动一个新的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);
}
我不确定如何修改这个方法以正确使用 Tasks。我想可能需要在其中加入 .ContinueWith 或者其他的东西。
有可能的解决方案?
public Task<string> GetSomeData(CancellationToken token)
{
return GetSomeInteger(token).ContinueWith((prevTask) =>
{
return GetSomeString(prevTask.Result, token);
}, token).Unwrap();
}
SomeOtherMethodWhichReturnsTask
和MethodWhichAlsoReturnsTask
的实际声明吗?现在的情况有点疯狂,因为它返回了一个Task<Task<string>>
的方法,我怀疑这是错误的... - Reed Copsey