STA スレッド内から GUI 要素 (ToolStripStatusLabel) にアクセスしようとしました。その上で呼び出しを取得しようとすると、あらゆる種類の問題が発生します。これは、ToolStripStatusLabelの呼び出しがないことを知っているためです。私の最新のエラーは次 のとおりです。
エラーが発生するため、呼び出しなしで更新できないようです: System.NullReferenceException 'が発生しました
ここでのオプションは何ですか? STA スレッド内から GUI スレッドの statuslabel.text を変更して、これを行うにはどうすればよいでしょうか。
ここにある標準の呼び出しコードとコントロール拡張機能のすべてのマナーを使用しましたが、それでも同じ問題があります。
要求されたコード:
private void buttonclick(object sender, EventArgs e)
{
CheckForIllegalCrossThreadCalls = false;
var thread = new Thread(() =>
{
var ie = watinBrowser();
log("[!] Starting Application");
log("blahblah");
});
thread.SetApartmentState(ApartmentState.STA);
thread.Start();
}
private void log(string logIt)
{
statusUpdate(logIt);
}
private void statusUpdate(string text)
{
if (this.statusStrip1.InvokeRequired)
{
this.statusStrip1.Invoke(new MethodInvoker(() => this.toolStripStatusLabel1.Text = text));
}
else
{
this.toolStripStatusLabel1.Text = text;
}
}