Я пытаюсь выяснить, почему это работает. Я создаю пользовательское событие и объект прогресса, которые запускаются из нити нити пользовательского интерфейса. Я поместил событие результата в мое пользовательское событие, и обновление кросс-потоковой передачи в моем пользовательском интерфейсе все еще работает. Это не имеет никакого смысла. Событие запускает и запускает свой код, как происходит событие прогресса в рамках другого события. Я знаю, это никогда не должно быть сделано. Но я не могу понять, почему это работает.Комбинировал объект Progress с настраиваемым событием и не уверен, почему он работает, но он
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);
}
});
}
}
Но как это срабатывает в рамках другого события? Моя настройка в основном является событием в событии – user3363744
@ user3363744: Совсем нет. «Событие пожара» просто * подписывается * на событие «ProgressChanged», а не вызывает его. –
имеет смысл спасибо – user3363744