Как запустить тот же фоновый рабочий и остановить его внутри цикла в C#
Я выполнил генетический алгоритм, который циклически повторяется 10 раз, когда каждый раз, когда я вызываю функцию "FitnessFunction", я использую фонового работника для перемещения объекта в топологии, и как только он достигает определенной точки, я отменяю этого фонового работника и возвращаюсь к "". Genetic_Algorithm"функция...
К сожалению, я получил следующую ошибку:
Cross-thread operation not valid: Control 'topology' accessed from a thread other than the thread it was created on...
Что я пробовал:
Запускайте фоновый рабочий каждый раз, когда я вызываю функцию "FitnessFunction", которая отвечает за ее остановку при определенных условиях.
1 ответ
WinForms запрещает доступ к элементам управления из других потоков, кроме основного интерфейса.
использование Invoke(..)
метод формы или использования SynchronizationContext
учебный класс.
private SynchronizationContext context;
MyForm()
{
InitializeComponents();
context = SynchronizationContext.Current;
}
///// somewhere in another thread
context.Post(myCallbackInUIThread, null) // you can use Send for synchronous call