由于这个新线程是通过委托创建的,因为什么原因this.InvokeRequired
等于False
within ?InitUIState()
我的问题是我的标签从未被设置并且this.BeginInvoke()
从未执行,我想这是由于事实InvokeRequired
= False
。
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()
被调用的实例,即来自委托)
多谢你们。
验证两个不同线程的图像:http:
//imgur.com/mq12Wl&X5R7G
http://imgur.com/mq12W&X5R7Gl
后续问题:这是创建线程的不受欢迎的方式吗?我一直觉得它如此简单和轻量级。也许我应该使用thread.Start()
并且我会避免这些问题?