【发布时间】:2012-04-07 07:58:14
【问题描述】:
我的主窗体 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();
【问题讨论】:
标签: c# multithreading thread-safety