【问题标题】:C# WPF label not updating properly on (idle) GUIC# WPF 标签未在(空闲)GUI 上正确更新
【发布时间】:2019-01-31 17:42:27
【问题描述】:

所以我正在尝试制作一个计时器系统,但无论出于何种原因,当您将鼠标移到应用程序的 GUI 屏幕上时,标签会停止更新。

显示问题的 Gif: https://i.imgur.com/Jvi1AgF.gifv 这就是我尝试的另一个示例中发生的情况。

但是,在我的示例中,情况正好相反。它仅在更新 GUI 时更新。我不知道如何解决这个问题。

GIF:https://i.imgur.com/KezAVaj.gifv

public partial class MainWindow : Window
{
    Stopwatch _stopwatch;
    DispatcherTimer _timer;
    public MainWindow()
    {
        InitializeComponent();
        _stopwatch = new Stopwatch();
        _timer = new DispatcherTimer();
        _timer.Interval = new TimeSpan(10);
        _timer.Tick += new EventHandler(Tick);

    }

    private void Tick(object sender, EventArgs e)
    {
        LabelTime.Content = _stopwatch.Elapsed.ToString(@"m\:ss\.ff");
    }

    private void Button_Click(object sender, RoutedEventArgs e)
    {
        _stopwatch.Start();
        _timer.Start();
    }
}

【问题讨论】:

  • new TimeSpan(10) 创建 1 微秒的 TimeSpan:docs.microsoft.com/en-us/dotnet/api/…
  • 奇怪,但这段代码对我来说很好用。
  • @Alexander 说真的,间隔为 1 微秒?
  • @Clemens 是的,认真的。
  • 创建具有合理间隔的计时器,例如TimeSpan.FromMilliseconds(10) 并可选择增加其priority

标签: c# wpf stopwatch dispatchertimer


【解决方案1】:

变化

_timer = new DispatcherTimer();

_timer = new DispatcherTimer(DispatcherPriority.Render);

修复了问题。

【讨论】:

  • 正常应该没问题。默认为背景。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-15
  • 2019-12-08
  • 2014-04-06
  • 1970-01-01
  • 2016-06-03
相关资源
最近更新 更多