2012-10-14 17 views
9

Async ve bekletme için .NET4.5 kullanmaya başladım.Senkronizasyon ve bekletme ile birlikte System.Threading.Thread.Sleep

await Task.Delay(3000); 

Şimdi benim uzun vadeli hesapları gerçekten benzer:: Örneğin

System.Threading.Thread.Sleep(3000) 

:

for(i=0;i<1000000000;i++) 
    i=i*2; 

yapmak nasıl Tüm örnekler uzun süreli çalışmasını simüle etmek için aşağıdaki kullanmak gibi görünüyor Bu işi uyumsuzlukla mı yapıyorum ve bekliyoruz? Şimdi, bu harika yeni yöntemle web sorguları, WCF vb. Gibi yöntemleri kullanabiliyorum.

Noktayı nerede özlüyorum?

+0

demek yerine anlamsız? Onların gerçekten * uyuduğunu hayal edemezdim. –

+0

Hayır, onlar for döngüsünü engelliyorlar mı? Temel olarak elde etmeye çalıştığım şey, uzun bir döngü için beklemek. – Enrico

+0

Muhtemelen hesaplarınızın gerçekten benzer olduğunu söylemek yerine sürenin .Sleep (3000) işlevi kullanılarak yaklaşılabileceğini söylemek daha iyi olur mu? – HansLindgren

cevap

17
await Task.Run(() => Thread.Sleep(10000)) 

İşe yarar, ama siz "benim uzun vadeli hesapları Thread.Sleep`` gerçekten benzerdir" ile neyi

+0

Evet ama tam olarak ihtiyacım olan şey bu. Thread.Sleep engelleme işleviyle değiştirebilir ve çalışır! Teşekkürler, aptalca bir soru gibi görünüyor, ama bana yardım ediyor. – Enrico

+1

Bunun anlamsız olduğunu söylüyorsunuz, bu normalde engellenecek bir async fonksiyonunda bana yardımcı olmaz. Eğer bunu kesinlikle yaparsan iş parçan dışarı çıkabilir ve başka işler yapabilir. Özellikle IIS içinde koşarak konuşuyorum. – Zapnologica