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ş:
C senkron yöntemi zaman uyumsuz yöntem...
Güvenli bir şekilde C zaman uyumsuz yö...
Nasıl bir alıcı ya da ayarlayıcı gelen...
Nasıl dosyaları zaman uyumsuz olarak y...
Nasıl bir yöntem zaman'Java yürüt...