我试图用椭圆形表示我的服务器状态。我的服务器启动时,它应该是黄色,在线/离线时它应该是绿色/红色。
问题是我看不到黄色椭圆。我在server.start()方法中放入了Thread.Sleep(3000)语句进行调试,但是当我触发“ ellipse_serverStatus_MouseLeftButtonUp”事件时,在这3秒后,我只能看到椭圆的颜色从红色变为绿色。
private void ellipse_serverStatus_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{
this.Dispatcher.Invoke((Action)(() =>
{
ellipse_serverStatus.Fill = Brushes.Yellow;
}));
if (server.IsRunning)
{
server.Stop();
ellipse_serverStatus.Fill = Brushes.Red;
}
else
{
server.Start();
ellipse_serverStatus.Fill = Brushes.Green;
}
}
我还尝试使方法异步并使用此方法:
await Task.Run(() => ellipse_serverStatus.Fill = Brushes.Yellow);
代替:
this.Dispatcher.Invoke((Action)(() =>
{
ellipse_serverStatus.Fill = Brushes.Yellow;
}));
但是当我使用Task.Run()时程序崩溃,并告诉我不能从其他线程使用WPF控件