По каким причинам this.InvokeRequired
будет равно False
в пределах 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()
, и я буду избегать этих проблем?