private void ButtonSwitch_Click(object sender, RoutedEventArgs e) { try { Task.Run(() => SnakeBarMessage(I18N.GetString("PleaseWait"))); if (V2Ray.IsRunning()) { Task.Run(() => V2Ray.Stop()); } else { Task.Run(() => V2Ray.Start()); } Task.Run(() => UpgradeStatus(true)); } catch (Exception ex) { MessageBox.Show(ex.Message, name, MessageBoxButton.OK, MessageBoxImage.Error); } }
private void UpgradeStatus(bool isWait) { Dispatcher.Invoke(new Action(() => { buttonSwitch.IsEnabled = false; buttonRoute.IsEnabled = false; buttonNode.IsEnabled = false; buttonListen.IsEnabled = false; labelStatus.Content = $"{I18N.GetString("Waiting")}"; labelStatus.Foreground = labelUpgrade.Foreground; })); if (isWait) { Task.Delay(2000).Wait(); } Dispatcher.Invoke(new Action(() => { var isRunning = V2Ray.IsRunning(); var isUsingRoute = V2Ray.IsUsingRoute(); var isListenHostOnly = V2Ray.IsListenHostOnly(); if (isRunning) { buttonSwitch.Content = I18N.GetString("Stop"); } else { buttonSwitch.Content = I18N.GetString("Start"); } if (isUsingRoute) { buttonRoute.Content = I18N.GetString("Global"); } else { buttonRoute.Content = I18N.GetString("Route"); } if (isListenHostOnly) { buttonListen.Content = I18N.GetString("AllowAny"); } else { buttonListen.Content = I18N.GetString("HostOnly"); } if (isRunning) { if (isUsingRoute && isListenHostOnly) { labelStatus.Content = $"{I18N.GetString("RunningStatus")}: " + $"{I18N.GetString("Route")}, {I18N.GetString("HostOnly")}"; labelStatus.Foreground = Brushes.DarkCyan; } else if (isUsingRoute && !isListenHostOnly) { labelStatus.Content = $"{I18N.GetString("RunningStatus")}: " + $"{I18N.GetString("Route")}, {I18N.GetString("AllowAny")}"; labelStatus.Foreground = Brushes.DarkCyan; } else if (!isUsingRoute && isListenHostOnly) { labelStatus.Content = $"{I18N.GetString("RunningStatus")}: " + $"{I18N.GetString("Global")}, {I18N.GetString("HostOnly")}"; labelStatus.Foreground = Brushes.DeepPink; } else { labelStatus.Content = $"{I18N.GetString("RunningStatus")}: " + $"{I18N.GetString("Global")}, {I18N.GetString("AllowAny")}"; labelStatus.Foreground = Brushes.DeepPink; } } else { labelStatus.Content = $"{I18N.GetString("RunningStatus")}: " + $"{I18N.GetString("Stoped")}"; labelStatus.Foreground = labelUpgrade.Foreground; } buttonSwitch.IsEnabled = true; buttonRoute.IsEnabled = true; buttonNode.IsEnabled = true; buttonListen.IsEnabled = true; })); }