В основном у меня проблемы с потоками c # внутри wpf и с тем, как их правильно использовать.
Сначала я столкнулся с зависанием моего приложения из-за длительной работы.Изучив, как решить эту проблему, я решил использовать метод Dispatcher BeginInvoke и поместил запущенную операцию в свой собственный поток.Однако объем кода, который должен быть отправлен потоку пользовательского интерфейса, слишком велик, чтобы что-то изменить.
Вот упрощенная версия того, что я делаю, что вызывает зависание:
for (int i = 0; i < 5; i++)
{
for (int j = 0; j < 100; j++)
{
for (int k = 0; k < 100; k++)
{
Image image = new Image();
// ... Do stuff with image here
Binding binding = new Binding();
// ... Bind some properties to the image
// Add the image to a list and a canvas
List.Add(image);
SomeCanvas.Children.Add(image);
}
}
}
Как вы видите, большая часть обработки в операции состоит из использования элементов управления.Поэтому они должны передаваться потоку пользовательского интерфейса асинхронно.После этого в основном все операции выполняются в потоке пользовательского интерфейса, и снова приложение зависает: /
Есть предложения о том, что я могу сделать в этой ситуации?Большое спасибо