私のメインフォームForm1
は、私のプログラムの主な部分を実行しています。C#テキストボックスの値を設定する元のスレッドに戻る
私はアルゴリズムを実行するために別のスレッドを開始しました。
私は新しいスレッド、方法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();
[クロススレッド操作が有効でない:作成されたスレッド以外のスレッドからアクセスされたコントロール](http://stackoverflow.com/questions/142003/cross-thread-operation-not-valid) -control-accessible-from-the-thread-other-than-the) –