Я пытаюсь указать состояние моего сервера с помощью эллипса. Когда мой сервер запускается, он должен иметь желтый цвет, а когда он подключен к сети / отключен, он должен быть зеленым / красным.
Проблема в том, что я не вижу желтый эллипс. Я помещаю в метод 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 из другого потока