Yapmam gereken 10 görevim olduğu bir windows form projesi geliştiriyorum ve bunu async
şekilde yapmak istiyorum. Bu görevler, kullanıcı bir düğmeyi tıklattığında yıldız olacak ve bunu yapmak için async
yöntemini çağırıyorum. Kodumda, zaten bu işlemler için bir parametre listesi var.Bir async yönteminde kullanıcı arabirimine nasıl geri bildirim sağlanabilir?
Sorularım ise:
A) Nasıl paralel tüm süreci çalıştırmak için kodumu dönüşümü? (Ben uyumsuzluk/beklemeyi uygulamak istiyorum)
B) UI uygulamasına nasıl geri bildirim sağlanabilir?
kod feryat denedim budur:
Benim düğmesi parametresini
private async void ProcessObject(ProcessViewModel process)
{
// this is my loop scope, which I need to run in parallel
{
// my code is here
// increment the progress of this process
process.Progress++;
// feedback to UI (accessing the UI controls)
UpdateRow(process);
}
}
alma benim sürecini simüle etmek süreçleri
private void button1_Click(object sender, EventArgs e)
{
// almost 15 process
foreach (var process in Processes)
{
// call a async method to process
ProcessObject(process);
}
}
yöntem başlatmak için bir yöntemi çağırmak için
Bunu denedim, ancak UI'm (bir kılavuz) güncellemenin doğru yolu olup olmadığından emin değilim. İçinde atılan istisnalar fark olmayacak çünkü her şeyden önce
private void UpdateRow(ProcessViewModel process)
{
dataGridView1.Rows[process.Index - 1].Cells[1].Value = process.Progress;
dataGridView1.Refresh();
}
'ProcessObject''ü beklemiyorsunuz. Yazım hatası mı? –
Hayır, yalnızca ProcessObject yöntemini arıyorum. Bu yöntem için bir sonucum yok, beklemek için onu değiştirmeli miyim? –
Bu, TPL ile de yapılabilir: http://stackoverflow.com/questions/16913560/want-to-use-task-parallel-library-with-progress-reporting-for-updating-database – Schwarzie2478