У меня есть класс с двумя методами, Load() и Process(). Я хочу иметь возможность запускать их по отдельности в качестве фоновых задач или последовательно. Мне нравится синтаксис ContinueWith(), но я не могу заставить его работать. Я должен использовать параметр Task в методе, с которым продолжаю работать, и не могу иметь параметр Task в исходном методе.
Я хотел бы сделать это без лямбда-выражений, но я застрял либо с их использованием, либо с принудительным параметром задачи в одном из методов, либо с созданием третьего метода LoadAndProcess()?
void Run()
{
// doesn't work, but I'd like to do it
//Task.Factory.StartNew(MethodNoArguments).ContinueWith(MethodNoArguments);
Console.WriteLine("ContinueWith");
Task.Factory.StartNew(MethodNoArguments).ContinueWith(MethodWithTaskArgument).Wait();
Console.WriteLine("Lambda");
Task.Factory.StartNew(() => { MethodNoArguments(); MethodNoArguments(); }).Wait();
Console.WriteLine("ContinueWith Lambda");
Task.Factory.StartNew(MethodNoArguments).ContinueWith(x => {
MethodNoArguments();
}).Wait();
}
void MethodNoArguments()
{
Console.WriteLine("MethodNoArguments()");
}
void MethodWithTaskArgument(Task t = null)
{
Console.WriteLine("MethodWithTaskArgument()");
}