我有一个 WPF 画布,我想在其中Rectangles
每 x 毫秒显示不同的颜色(存储在多维数组中)。
Random rnd = new Random();
foreach (var i in Enumerable.Repeat(1, 100))
{
_rectGrid[rnd.Next(0, 30), rnd.Next(0, 30)].Fill = new SolidColorBrush(Colors.Blue);
Thread.Sleep( 100 );
// refresh somehow here?
}
这可行,但我看不到它实时更新,因为它位于 MainWindow 构造函数中。
显然,矩形必须在 GUI 线程中创建,但如果我创建一个Timer
来更改颜色,它是在不同的线程中。
我可以创建一个多维值数组并将这些值绑定到 Rectangle 数组中的颜色,以便我可以从另一个线程访问它们吗?如果我这样做,我如何告诉 GUI 线程重绘?
也许让用户首先单击一个按钮会更简单,这样就不会在构造函数中发生这种情况?
EDIT:
DispatcherTimer
效果很好。为什么 MS 有一个单独的课程,这超出了我的范围。
这是我使用它的来源。