Я работаю с окном предупреждений (Telerik WPF), которое обычно отображается асинхронно (код продолжает работать, пока он открыт), и я хочу сделать его синхронным с помощью async / await.
У меня это работает с TaskCompletionSource
, но этот класс является универсальным и возвращает объект типа Task<bool>
, когда все, что мне нужно, - это простой Task
без возвращаемого значения.
public Task<bool> ShowAlert(object message, string windowTitle)
{
var dialogParameters = new DialogParameters { Content = message };
var tcs = new TaskCompletionSource<bool>();
dialogParameters.Closed += (s, e) => tcs.TrySetResult(true);
RadWindow.Alert(dialogParameters);
return tcs.Task;
}
Код, вызывающий этот метод,
await MessageBoxService.ShowAlert("The alert text.")
Как я могу вернуть неуниверсальную задачу, которая функционирует аналогично, которую я могу дождаться, пока не сработает событие dialogParameters.Closed
? Я понимаю, что могу просто проигнорировать bool
, возвращаемый в этом коде. Я ищу другое решение.