ビューによって呼び出される CloseWindow メソッドを使用して、ウィンドウ表示サービスがあります。呼び出しコードでブロッキング メソッドを作成したいと考えています。したがって、ウィンドウがポップアップしている間はブロックし、ウィンドウから出力が返されるようにすることができます。
この手動リセットの使用は許容されますか? それまたは TPL との混合方法に技術的または設計上の問題はありますか?
そのサービスはこちら
private readonly ManualResetEvent closedEvent = new ManualResetEvent(true);
public void DisplayWindow(){
window = new MyWindow();
}
public void CloseWindow() {
window.Close();
closedEvent.Set();
}
//new
public async Task WaitClosed()
{
await Task.Run(() => this.closedEvent.WaitOne());
}
ここにそれを呼び出すコードがあります。
public void DisplayWindow(string content, string title)
{
dialogservice.DisplayWindow();
}
public async Task DisplayWindowAsync(string content, string title)
{
dialogservice.DisplayWindow();
await dialogservice.WaitClosed();
}