我有一个带有 4 个菜单项的 Gtk.Menu。以下代码每秒执行一次,以更改每个 MenuItem 的 Label.Text:
double d = new Random().NextDouble();
for (int i = 0; i < 4; i++)
{
((Label)((MenuItem)menu.Children[i]).Child).Text = d.ToString();
}
我在 ubuntu linux 上使用 mono 2.10.8.1 和 monodevelop 3.0.3.2。
问题
问题是并非所有标签都得到更新(有时只有第一个和第二个,有时只有第一个和最后一个)。
我的快速破解
我可以通过让线程在每个循环中休眠 1 毫秒来克服这个问题:
for (int i = 0; i < 4; i++)
{
((Label)((MenuItem)menu.Children[i]).Child).Text = d.ToString();
Thread.Sleep(1); // HACK !!!
}
问题
- 这个问题的原因是什么?
- 什么是更好的解决方案?