私はC#での非同期プログラミングについて頭を下ろそうとしています。私は基本的なWPFプログラムを作成しました。これには、非同期Start()
メソッドを持つ新しいクラスCleaningService
が含まれています。 WPFプログラムには、クリック時にStart()
メソッドを呼び出すボタンがあります。C#での非同期プログラミング
このStart()
メソッド内で、非同期Method1()
メソッドを呼び出してから、非同期Method2()
メソッドを呼び出したいとします。
ボタンをクリックすると、Method2()
が呼び出されません。なぜこれが当てはまるのでしょうか?
コード:
class CleaningService : ICleaningService
{
private bool _continue;
public async void Start()
{
this._continue = true;
if (!await this.Method1())
{
this._continue = false;
}
if (!await this.Method2())
{
this._continue = false;
}
}
public void Cancel()
{
this._continue = false;
}
public async Task<bool> Method1()
{
// do something
Console.WriteLine("Processing Method1..");
return await new Task<bool>(() => true);
}
public async Task<bool> Method2()
{
if (this._continue)
{
// do something
Console.WriteLine("Processing Method2..");
return await new Task<bool>(() => true);
}
else
{
return await new Task<bool>(() => false);
}
}
}
あなたはタスクのコンストラクタを使用しないでください。これまで –