2013-09-16 16 views
12

C# içindeki tüm bekletme/uyumsuzluk deseniyle tamamen karıştım.Eşzamansız bir yöntemi beklerken

Bir form uygulamasına sahibim ve bir işlem yapmak için 20 saniye süren bir yöntemi çağırmak istiyorum. Bu yüzden ben await onu istiyorum. Doğru yolun async Task olarak işaretlendiğini sanıyordum ama bunu yapmak bir uyarı üretiyor çünkü ben onun içinde herhangi bir yerde await kullanmıyorum.

Bir google, bir TaskCompletionSource<T> döndürme hakkında bir şey ortaya çıkardı, ancak bir dönüş türü yok, çünkü boş.

await kullanarak bu yöntemi nasıl çağırabilirim?

+3

'async, arka plan iş parçacığı üzerinde yöntemi yürütmez; Yararlı bulabileceğiniz bir ['async' /' await' tanıtımı] (http://blog.stephencleary.com/2012/02/async-and-await.html) var. –

cevap

35

aşağıdaki gibi yöntemini çağırın:

await Task.Run(() => YourMethod()); 

Sizin için bir awaitable görev oluşturur Task.Run yöntemi kullandığınızda.

+0

Task.Run, ana UI iş parçacığında "YourMethod" komutunu çalıştırıyor mu, yoksa yeni bir iş parçacığı mı oluşturuyor? (ör. WinForms) – harag

İlgili konular