У меня есть основная форма Form1
, на которой выполняется основная часть моей программы.
У меня есть отдельный поток, который начал выполнять алгоритм.
Когда я запускаю метод из нового потока, метод MyAlgorithm()
я получаю ошибку
InvalidOperationException с сообщением: «Имя элемента управления, доступ к которому получен из потока, отличного от потока, в котором он был создан».
Как мне вернуться к исходной ветке, чтобы я мог запустить метод для обновления моих текстовых полей самыми последними значениями?
Это метод, который я хочу запустить, содержится в Form1, главном классе в моем приложении.
// Reset the results values
public void ShowResults()
{
while (true)
{
loopsNum.Text = Convert.ToString(resultLoopsNum);
nodesVisitedNum.Text = Convert.ToString(resultNodesVisitedNum);
nodesResolvedNum.Text = Convert.ToString(resultNodesResolvedNum);
cpuLoopsNum.Text = Convert.ToString(resultCpuLoopsNum);
shortestPathCostNum.Text = Convert.ToString(resultShortestPathCost);
}
}
Я смотрел на методы Invoke (), но не знаю, как получить исходный экземпляр моего Form1 из многопоточного метода.
Я вызываю свою ветку вот так ...
// Set the algorithm method up in it's own thread
Thread thread = new Thread(new ThreadStart(MyAlgorithm));
// Run the algorithm
thread.Start();