Чего вы ожидаете от запуска этого кода в качестве задачи? Это не дает никаких преимуществ здесь. Возможно, долго выполняемая проверка лицензии уже вызывается с await
, что делает его не блокирующим пользовательский интерфейс (если только не нарушена его реализация).
Чтобы блокировать окно сообщения, то есть модально, просто напишите
bool valid = await checkValidLicenseAsync(hardwareid); // non-blocking
if (!valid) {
MessageBox.Show("no License."); // blocking
}
Предполагая, что это System.Windows.MessageBox
, а не его подвеска winforms.
Возможный подход - использовать фабричный метод для возврата объекта. Другой способ - использовать AsyncLazy<T>
, как описано здесь Стивеном Клири
Смотри также:
- ответ Свика на Могут ли конструкторы быть асинхронными? .