. Özel bir olay ve hiçbir UI iş parçacığından işlenen bir ilerleme nesnesi oluşturuyorum. Özel etkinliğimde sonuç etkinliğini yerleştirdim ve kullanıcı arabirimimin çapraz iş parçacığı güncelleştirmesi hala çalışıyor. Bu hiçbir anlam ifade etmiyor. Etkinlik patlar ve kodunu çalıştırırsa, ilerleme olayı diğer olayda nasıl tetiklenir. Bunun asla yapılmaması gerektiğini biliyorum. Ama neden mantıklı çalıştığını anlayamıyorum.Progress nesnesini özel bir olayla birleştirin ve neden çalıştığından emin değil, ancak bunun neden çalıştığını anlamaya çalışıyorum
private void Button_Click(object sender, RoutedEventArgs e)
{
pracViewModel myViewModel = new pracViewModel(5, "Hello");
Progress<int> progress = new Progress<int>();
myViewModel.triggerEvent += (i) =>
{
Debug.WriteLine(i.ToString());
progress.ProgressChanged += (o, result) =>
{
txtBlock1.Text = result.ToString();
};
};
myViewModel.countAsync(progress);
}
class pracViewModel
{
public async void countAsync(Progress<int> progress)
{
await count(progress);
}
private Task count(IProgress<int> progress)
{
return Task.Run(() =>
{
for (int i = 0; i < 100; i++)
{
Task.Delay(1000).Wait();
progress.Report(i);
triggerEvent(i);
}
});
}
}
Ama başka bir olayda nasıl ateşlenir? Kurulumum temel olarak bir olaydaki bir olaydır. – user3363744
@ user3363744: Hiç de değil. "Yangın olayı", "ProgressChanged" etkinliğine yalnızca tetikleniyor * tetikleniyor. –
anlam ifade ediyor – user3363744