Метод Task.ContinueWith требует аргумента задачи?

У меня есть класс с двумя методами, 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()");
}
7
задан svick 17 June 2013 в 13:56
поделиться