Michael____ Ответов: 2

Предупреждение в visual studio 2012 относительно асинхронного оператора


Уважаемое сообщество,

Я работаю над проектом Visual Basic Windows Forms (.Net Framework 4.5) в Visual Studio 2012 и хочу использовать Asnyc/Await.

Я создал текстовое поле во время выполнения и добавил обработчик:
Dim TextBox1 As New System.Windows.Forms.TextBox
AddHandler TextBox1.KeyDown, AddressOf TextBox1_KeyDown
Теперь я хочу установить асинхронный оператор в этот Button1_KeyDown Sub:
Private Async Sub TextBox1_KeyDown(sender As Object, e As KeyEventArgs)
Но как только я помещаю асинхронный оператор в суб Visual Studio выдает мне следующее предупреждение в строке кода "AddressOf TextBox1_KeyDown" ("TextBox1_KeyDown" подчеркнуто зеленым цветом):

The Task returned from this Async Function will be dropped, and any exceptions in it ignored. Consider changing it to an Async Sub so its exceptions are propagated.

Как я могу избавиться от этого предупреждения? Или это на самом деле не проблема, и я могу игнорировать ее? Или мне не следует использовать асинхронность в подводных лодках? Асинхронная субмарина работает, но я думаю, что это не очень хорошая идея, чтобы игнорировать предупреждение.

Заранее спасибо за вашу помощь!

Майкл

Что я уже пробовал:

Я написал Полный асинхронный саб, который работает, но предупреждение не исчезает.

2 Ответов

Рейтинг:
9

Michael____

У меня была возможность протестировать его в VS 2017, и там предупреждение не всплывает. Поэтому я предполагаю, что не получу предупреждения, если открою свой проект в Новой Visual Studio.


Richard MacCutchan

Не делайте таких предположений, но выясните, почему вы больше не видите предупреждения. Являются ли настройки проекта в VS 2017 такими же, как и в оригинале, особенно уровни предупреждений компилятора. Если вы получаете предупреждение от компилятора, вы должны выяснить, почему, и исправить проблему. Подавление предупреждения, чтобы оно не появилось, скорее всего, просто приведет к ошибкам при попытке запустить код.

А в исходном сообщении даже объяснялось, какие изменения вам нужно внести в свой код, чтобы предупреждение больше не выдавалось.

Рейтинг:
19

RickZeeland

Вы можете сделать это с помощью Управление Спецификациями если ваша версия Visual Studio поддерживает его, как описано здесь: c# - Как получить предупреждение в Visual Studio, если асинхронные методы не заканчиваются на "асинхронный"? - переполнение стека[^]
Но я бы рекомендовал сначала попробовать другие способы исправить предупреждение, см. пример здесь: https://www.dotnetperls.com/async-vbnet[^]