Я работаю с окном предупреждения (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
, который возвращается в этом коде. Я ищу другое решение, чем это.