2012-10-23 11 views
7

en bu kodu düşünelim: gibiHer zaman async anahtar sözcüğünü kullanmak zorunda mıyız?</p> <pre class="lang-cs prettyprint-override"><code>await TheBestMethodEverX(); </code></pre> <p>bu iki yöntem ve neden arasındaki fark nedir:

public async Task TheBestMethodEver1() 
{ 
// code skipped 
await Dispatcher.RunAsync(CoreDispatcherPriority.Normal,() => 
{ 
    // code skipped 
}); 

}

public Task TheBestMethodEver2() 
{ 
    // code skipped 
    return Dispatcher.RunAsync(CoreDispatcherPriority.Normal,() => 
    { 
    // code skipped 
    }).AsTask(); 
} 

Bu yöntemlerin herhangi çağrılabilir İlkini genellikle kullanmalı mıyım? Sadece bekliyoruz son cümlesi olarak (ve diğer bazı awaitable nesne ile değil de, bir görev için bekleyen) ise

cevap

2

bu iki yöntem ve neden ben genellikle ilkini kullanmalısınız arasındaki fark nedir?

İlki bir derleyici tarafından üretilen durum makinesine sahip ve yığın üzerinde ek çöpler yaratıyor. Bu nedenle ikinci bir tercih edilir. Daha fazla bilgi için

, klasik Zen of Async videoyu izleyin. Tabii

0

, siz de atlayın ve sadece görevi iade edebilirsiniz. Gelecekte gerekli olması gerektiğinde, async değiştiricisini eklemek kolaydır.

+0

i herhangi bir yöntemi uygulayabilir, ancak bu ideolojik bir sorudur. Hangi yol tercih edilir ve neden? En iyi uygulama nedir? A-öğrenci @ –

+0

: Yanıtladığınız cevabı 'await' gereksiz ve atlanabilir düşündürmektedir. Bu çözümü tercih etmek için fazlalık iyi bir neden değil mi? –

İlgili konular