我有一个窗口显示服务,带有视图调用的 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();
}