zaman uyumsuz/Görev vs bir boşluk dönmek için ne bekliyor?
Ne senaryolar altında kullanmak istiyorum
public async Task AsyncMethod(int num)
yerine
public async void AsyncMethod(int num)
Aklıma gelen tek senaryo görevi onu izlemek gerekir.
Ayrıca, aşağıdaki yöntem, zaman uyumsuz ve gereksiz kelimeleri bekliyor?
public static async void AsyncMethod2(int num)
{
await Task.Factory.StartNew(() => Thread.Sleep(num));
}
CEVAP
1) Normalde Task
iade etmek isterim. Ana durum size zaman olmalıdırgerekvoid
dönüş türü (etkinlikler için). Eğer await
Senin görevin arayan sahip vermemek için sebebi varsa hayır, neden buna izin vermemek?
2) 11* *yöntemleri void
dönüş başka bir yönüyle özel olan: temsil ediyorlarüst düzey zaman uyumsuz işlemlerive Senin görevin bir özel durum döndürür zaman devreye girer ek kurallar var. En kolay yol farkı bir örnek ile göstermek için:
static async void f()
{
await h();
}
static async Task g()
{
await h();
}
static async Task h()
{
throw new NotImplementedException();
}
private void button1_Click(object sender, EventArgs e)
{
f();
}
private void button2_Click(object sender, EventArgs e)
{
g();
}
private void button3_Click(object sender, EventArgs e)
{
GC.Collect();
}
f
'nin özel durum her zaman"". gözlenen Üst düzey bir zaman uyumsuz yöntem bırakmayan bir istisna sadece herhangi bir diğer özel durum olarak değerlendirilir. g
'nin özel durum hiçbir zaman görülmektedir. Çöp toplayıcı görevi temizlemek için geldiğinde, söz konusu görev için bir istisna sonuçlandı görüyor ve kimse dışında işlenmiş. Bu olduğunda, TaskScheduler.UnobservedTaskException
işleyici çalışır. Bunun olmasına asla izin vermemelisin. Sizin örnek kullanmak için
public static async void AsyncMethod2(int num)
{
await Task.Factory.StartNew(() => Thread.Sleep(num));
}
Evet, async
await
burada kullanın, doğru, eğer bir özel durum yöntemi hala çalışıyor emin olun.
daha fazla bilgi için bkz: http://msdn.microsoft.com/en-us/magazine/jj991977.aspx
Kullanarak zaman uyumsuz/çoklu görevle...
Zaman uyumsuz olarak Görev<T> za...
Doğru Görev kullanın.Sadece uyumsuz-be...
Current zaman uyumsuz / çalışmak için ...
Ne zaman uyumsuz bir Görev<T> yö...