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

  • Android Police

    Android Poli

    21 NİSAN 2010
  • Palmundo Ec

    Palmundo Ec

    11 HAZİRAN 2009
  • TheMasterOfHell100

    TheMasterOfH

    13 AĞUSTOS 2011