Load() と Process() の 2 つのメソッドを持つクラスがあります。これらをバックグラウンド タスクとして個別に、または順番に実行できるようにしたいと考えています。ContinueWith() 構文が気に入っていますが、機能させることができません。続行するメソッドで Task パラメーターを取得する必要があり、最初のメソッドで Task パラメーターを取得できません。
ラムダ式を使用せずに実行したいのですが、ラムダ式を使用するか、メソッドの 1 つにタスク パラメーターを強制するか、3 つ目のメソッド 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()");
}