2016-05-29 4 views
-2

У меня есть кнопка, которая делает следующее:C# ОЖИДАНИЕ асинхронного не работает

private void button3_Click_1(object sender, EventArgs e) 
{ 
doStuff(); 
} 

Вот моя функция DoStuff:

private async Task doStuff() 
{ 
var nat = new NatDiscoverer(); 

// we don't want to discover forever, just 5 senconds or less 
var cts = new CancellationTokenSource(5000); 
var device = await nat.DiscoverDeviceAsync(PortMapper.Upnp, cts);    
} 

Изначально я получаю сообщение об ошибке, но это потому, что я Жду» t имеет «асинхронную задачу» в функции doStuff().

В настоящее время у меня больше нет красных линий, но у меня есть зеленые линии под событием button3_Click для функции doStuff();

В нем говорится, что нужно добавить «ожидание», но если я добавлю перед представлением doStuff(), я получаю сообщение об ошибке.

Я правильно использую это? Как я могу заставить это работать правильно?

Я использую DLL Open.NAT, просто пытаясь перечислить открытые порты.

Предупреждение я получаю: Рассмотрим добавление «ждут» оператора к остальной части вызова

Спасибо,

+0

'Я получаю сообщение об ошибке '<- * what * error? – wal

+0

'PageRegisterAsuncTask (doStaff);' –

ответ

2

сделать вашу кнопку метод нажмите async и await ваш звонок

private async void button3_Click_1(object sender, EventArgs e) 
{ 
    await doStuff(); 
} 
+0

Если я это сделаю, у меня все еще есть зеленые виглеры с предупреждением: Рассмотрите возможность добавления оператора ожидания к остальной части вызова – RobertC

+0

@RobertC 'остальной части вызова '<- какая строка ru получает это? он ждал на нем? – wal

+0

Я получаю предупреждение под «DoStuff()» так это выглядит так: частного асинхронный недействительный button3_Click_1 (объект отправителя, EventArgs е) { ждут DoStuff() <----- это имеет swigglies ; } – RobertC