Ben şu iki basit örnekler var) (bekle.,Task.Delay() vs Task.Delay() beklemektedir C#
[Test]
public void TestWait()
{
var t = Task.Factory.StartNew(() =>
{
Console.WriteLine("Start");
Task.Delay(5000).Wait();
Console.WriteLine("Done");
});
t.Wait();
Console.WriteLine("All done");
}
[Test]
public void TestAwait()
{
var t = Task.Factory.StartNew(async() =>
{
Console.WriteLine("Start");
await Task.Delay(5000);
Console.WriteLine("Done");
});
t.Wait();
Console.WriteLine("All done");
}
İlk örnek bir görevi baskılar "Başlat" yaratır bekler 5 saniye "Bitti" yazdırır ve sonra görevi sonlandırır. Görevin bitmesini ve ardından "Tamamlandı" yazısını bekliyorum. Testi çalıştırdığımda beklediğim gibi. İkinci sınama aynı davranışa sahip olmalıdır, ancak Görev içinde beklemenin, async kullanımı ve bekletme nedeniyle engellenmemesi dışında. Ancak bu test sadece "Start" yazıyor ve hemen "All done" ve "Bitti" yazdırılmıyor.
Ben bu davranışı elde neden bilmiyorum: Her türlü yardımı çok takdir :) S
Task.Delay engellenmeyen olduğunu. İkinci yapıyı neden kullanacağın konusunda bir sebep göremiyorum. –
@RoyDictus'un her ikisinin de kendi sorunları var. Asla 'Task.Wait() ' – Gusdor
'un bir kopyasının [bir görevin içinde uyumsuzluk/bekleyiş bekleniyor] olasılığını asla çağırmamalısınız (http://stackoverflow.com/questions/24777253/waiting-for-async-await-inside-a- Görev) – i3arnon