Я сделал заявку в WPF. Образец этого приложения содержит класс usercontrol, который взаимодействует со вторым классом (myClass2.cs). Внутри myClass2.cs я создал Canvas как глобальную переменную в основном потоке. Затем я создаю новый поток, работающий как STA. Как только этот поток завершит обработку своих данных, я хочу отобразить данные на холсте, хранящемся в основном потоке. Для этого я создал делегат, который отправляет полилинию обратно в главный поток для построения графика. Я начинаю со следующего:
public delegate void canvasDel (Polyline polyline);
canvasDel handler = updateUI;
public void updateUI(Polyline polyline)
{
canvas.Children.Add(polyline);
}
Затем я использую диспетчер приложений и Invoke.
Application.Current.Dispatcher.Invoke(new Action(() => handler(polyline)));
Поток теперь выполняется в основном потоке пользовательского интерфейса, но полилиния все еще принадлежит другим потоком и не могут быть доступны. Как передать полилинию в основной поток для обновления Canvas?