Я так использую Tasks в С#, но меня путают, когда я пытаюсь вернуть задачу из метода, и этот метод будет выполнять несколько задач внутри себя. Итак, у меня есть метод, который запускает новую задачу, а затем делает все последовательно внутри? Трудно обернуть вокруг себя все это с помощью .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);
}
Я не уверен, как еще написать этот метод, чтобы он правильно использовал Задачи. Я думаю, я просто чувствую, что должен быть. Континуум с там или еще чем-то.
Возможное исправление
public Task<string> GetSomeData(CancellationToken token)
{
return GetSomeInteger(token).ContinueWith((prevTask) =>
{
return GetSomeString(prevTask.Result, token);
}, token).Unwrap();
}