У меня есть окно, отображающее сервис, с помощью метода CloseWindow, который вызывается видом. Я хочу создать метод блокировки в моем кодовом коде. Поэтому я могу блокировать, пока появляется окно, и чтобы выходы возвращались из окна.Использование дескриптора ожидания события для блокировки окна закрывается, а затем завершается как ожидание async. Приемлемо?
Возможно ли использование ручного сброса? Существуют ли какие-либо технические или дизайнерские проблемы с ним или с тем, как я смешиваю его с 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();
}
Почему не 'ShowDialog'? – Amorphis