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

  • Awesome Toys TV

    Awesome Toys

    18 HAZİRAN 2014
  • ShoSho

    ShoSho

    20 Ocak 2010
  • Tomas N

    Tomas N

    14 Kasım 2010