【发布时间】:2013-12-18 15:21:15
【问题描述】:
我有一个程序在一个窗口内的其他线程中运行一系列方法,让用户知道使用状态栏发生了什么。状态栏更新在设置状态栏然后刷新 GUI 的主线程中。有几个串联的代码块,每个看起来像这样:
Thread do1Thread = new Thread(Class.Method);
do1Thread.Start();
// inform user
this.status.Text = "Doing stuff 1...";
// update GUI
Utility.RefreshGUI();
// join thread
do1Thread.Join();
有时状态栏确实会更新,但通常会停留在第一个状态,直到最后显示最后一个状态。偶尔会坚持“准备好”。这是默认设置。
请注意,其中两个块需要几秒钟,因此应该有时间进行更新。此外,该程序是用 C# (Mono) 编写的,使用 GTK# 作为 GUI。
如何确保 GUI 更新以反映更改?
【问题讨论】:
-
您在上面放置的代码块是否发生在 UI 线程上?如果在 UI 线程上执行
.Join()是您的问题。 -
大家好,我得了重感冒,等我好了,我会试试这些建议。感谢所有帮助。
标签: c# multithreading mono gtk#