この新しいスレッドはデリゲートを介して作成されているため、どのような理由で 内でthis.InvokeRequired等しいでしょうか?FalseInitUIState()
私の問題は、ラベルが設定されておらず、実行されていないことです。これは=this.BeginInvoke()という事実によるものだと思います。InvokeRequiredFalse
private delegate void BackgroundOperationDelegate(ViewMode mode);
private BackgroundOperationDelegate backgroundOperationDelegate;
private void FormControlPanel_Load(object sender, EventArgs e)
{
Init();
}
private void Init() {
this.backgroundOperationDelegate = this.InitUIState;
this.backgroundOperationDelegate.BeginInvoke(mode, null, null);
}
private void InitUIState(ViewMode mode)
{
// .. other business logic only here relevant
// to the worker process ..
this.BeginInvoke((MethodInvoker)delegate
{
this.labelProgramStatus.Text = CONSOLE_IDLE_STATUS;
});
}
私はこのパターンを何度も使用していますが、何らかの理由で、今回は実行されていません :P (そしてInitUIState()、デリゲートから呼び出されるインスタンスは 1 つだけです)
みんなありがとう。
2 つの異なるスレッドを検証する画像:
http://imgur.com/mq12Wl&X5R7G
http://imgur.com/mq12W&X5R7Gl
フォローアップの質問:これはスレッドを作成するための好ましくない方法ですか? 私はいつもそれがとてもシンプルで軽量だと思っていました. おそらく私は使用する必要がthread.Start()あり、これらの問題を回避できますか?