SORU
17 NİSAN 2013, ÇARŞAMBA


Nasıl C zaman Uyumsuz bir Yöntem oluşturun.?

Okuduğum her blog yazısı C zaman uyumsuz bir yöntem tüketmek anlatır# ama bazı garip nedenle asla kendi zaman uyumsuz yöntemlerini tüketmek oluşturmak için nasıl açıklar. Benim yöntem tüketir bu kod şu an elimde.

private async void button1_Click(object sender, EventArgs e)
{
    var now = await CountToAsync(1000);
    label1.Text = now.ToString();
}

Ve CountToAsync Bu yöntemi yazdım:

private Task<DateTime> CountToAsync(int num = 1000)
{
    return Task.Factory.StartNew(() =>
    {
        for (int i = 0; i < num; i  )
        {
            Console.WriteLine("#{0}", i);
        }
    }).ContinueWith(x => DateTime.Now);
}

Bu, Task.Factory, zaman uyumsuz bir yöntem yazmak için en iyi yolu, ya da yazayım bunu başka bir şekilde?

CEVAP
17 NİSAN 2013, ÇARŞAMBA


Karmaşıklık düzeyini gerekli olmadıkça StartNew tavsiye etmiyorum.

Eğer zaman uyumsuz yöntemi diğer yöntemler zaman uyumsuz bağımlı ise, en kolay yöntem async anahtar kelime kullanmak için

private static async Task<DateTime> CountToAsync(int num = 10)
{
  for (int i = 0; i < num; i  )
  {
    await Task.Delay(TimeSpan.FromSeconds(1));
  }

  return DateTime.Now;
}

Eğer zaman uyumsuz yöntemini CPU iş yaptığını, Task.Run kullanmanız gerekir:

private static async Task<DateTime> CountToAsync(int num = 10)
{
  await Task.Run(() => ...);
  return DateTime.Now;
}

Benim async/await intro yararlı olabilir.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • KliptOut KwazeeKilla

    KliptOut Kwa

    24 ŞUBAT 2010
  • PorterRobinsonVEVO

    PorterRobins

    11 Kasım 2013
  • UKF

    UKF

    2 Aralık 2009