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

  • Hak5

    Hak5

    7 EYLÜL 2005
  • Joseph Herscher

    Joseph Hersc

    14 Mart 2007
  • tatermoog

    tatermoog

    2 AĞUSTOS 2006