私は 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();
}