ループのコンテンツをUIに表示しようとしています。まず、(WinFormsを使用して)これに正しい方法でアプローチしているかどうかはわかりませんが、これが私が行っていることです。
foreach (string item in stringArray)
{
Thread thread = new Thread(delegate()
{
UpdatedResultEvent(item);
});
thread.SetApartmentState(ApartmentState.STA);
thread.Start();
}
これで十分な情報になるといいのですが、そうでない場合は、ここで詳しく説明します。
Program.cs(WinForm)とlogicClassという別のクラスの2つのクラスがあります。ProgramオブジェクトのインスタンスをlogicClassに渡します。私のlogicClassには、プログラムクラスのメソッドと署名が一致するデリゲートがあります。デリゲートとして渡されるメソッドは
public void UpdateResultsOnScreen(string newContent)
{
txtResults.Text += newContent;
}
エラーメッセージは
クロススレッド操作が無効です:作成されたスレッド以外のスレッドからアクセスされたコントロール
編集
目標は、プログレスバーが機能する方法と同様に、コントロールがリアルタイムで更新されるのを確認することです。現在、それが機能する場合でも、スレッドは、スレッドが完了するまで「結果」を画面に返しません。