使用C ++ / CLI从线程更新状态栏

时间:2009-08-13 14:37:29

标签: multithreading winforms c++-cli

我确信这是一个非常直截了当的问题。我正在使用C ++ / CLI编写一个小型Windows窗体应用程序。当表单初始化时,我启动一个将处理一些代码的线程。当执行线程中的代码时,我希望线程以某种方式更新窗口底部状态栏中的文本。所以我在想这样的事情:

  1. 我创建了一个活动。
  2. 然后我创建将执行一些处理的线程。
  3. 处理完成后,触发一个事件,使状态栏中的文本更新。
  4. 这是一种合理的方式吗?如果是这样,我如何从线程内更新状态栏?也许有更聪明的方法来实现这个目标?

1 个答案:

答案 0 :(得分:3)

声明一个类似于更改给定字符串的状态文本的方法:

private: void UpdateStatus(String^ msg) {
    statusBar.Text = msg;
}

并从另一个帖子中使用Invoke

Invoke(gcnew Action<String^>(this, &Form1::UpdateStatus), "message");

Invoke将使用UI线程上的指定参数调用给定的委托。