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

发布于 2024-08-01 23:49:26 字数 295 浏览 1 评论 0原文

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

  1. 我创建一个事件。
  2. 然后我创建将进行一些处理的线程。
  3. 处理完成后,触发一个事件,使状态栏中的文本更新。

这是一条合理的路吗? 如果是这样,如何从线程内更新状态栏? 也许有更聪明的方法来实现这一目标?

I'm sure this is a pretty straight forward question. I'm writing a small windows forms app using C++/CLI. When the form initializes, I start a thread that will process some code. When the code in the thread is executed, I want the thread to somehow update the text in a statusbar in the bottom of the window. So I was thinking something like this:

  1. I create an event.
  2. Then I create the Thread that will do some processing.
  3. When the processing is done, fire an event that makes the text in the statusbar update.

Is this a reasonable way to go? If so, how do I update the statusbar from within the thread? Maybe there is a smarter way to acheive this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

过期以后 2024-08-08 23:49:26

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

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

并在另一个线程中使用 Invoke

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

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

Declare a method like that changes the status text given a string:

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

and from the other thread, use Invoke:

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

Invoke will call the given delegate with the specified parameters on the UI thread.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文