4 つの MenuItems を持つ 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でmonodevelop 3.0.3.2でmono 2.10.8.1を使用しています。
問題
問題は、すべてのラベルが更新されていないことです (最初と 2 番目のみ、場合によっては最初と最後のみ)。
私のクイックハック
各ループでスレッドを 1 ミリ秒スリープさせることで、この問題を解決できます。
for (int i = 0; i < 4; i++)
{
((Label)((MenuItem)menu.Children[i]).Child).Text = d.ToString();
Thread.Sleep(1); // HACK !!!
}
質問
- この問題の理由は何ですか?
- より良い解決策は何ですか?