我想獲得如下圖所示的 Windows UpTime

我正在使用 NetFrameWork 3 我使用此代碼顯示 Windows 的 UpTime
PerformanceCounter upTime = new PerformanceCounter("System", "System Up Time");
upTime.NextValue();
TimeSpan ts = TimeSpan.FromSeconds(upTime.NextValue());
UpTime.Text = "UpTime: " ts.Days ":" ts.Hours ":" ts.Minutes ":" ts.Seconds;
但是我收到的是固定的并且不會自行更新我想同時在這里更改 Windows 的正常運行時間請指導我
uj5u.com熱心網友回復:
你的代碼看起來不錯。唯一缺少的是您應該定期呼叫它來更新 UI。
看看這個例子:https ://docs.microsoft.com/en-us/dotnet/api/system.windows.threading.dispatchertimer?view=windowsdesktop-6.0
重要的是要注意,因為您要更新 UI:
為了訪問用戶界面 (UI) 執行緒上的物件,有必要使用 Invoke 或 BeginInvoke 將操作發布到用戶界面 (UI) 執行緒的 Dispatcher。使用 DispatcherTimer 而不是 System.Timers.Timer 的原因是 DispatcherTimer 與 Dispatcher 在同一執行緒上運行
您唯一稍作修改的代碼可能看起來像這樣:
DispatcherTimer dispatcherTimer;
public MainWindow()
{
InitializeComponent();
DispatcherTimer_Tick(null, EventArgs.Empty);
dispatcherTimer = new DispatcherTimer();
dispatcherTimer.Interval = TimeSpan.FromSeconds(1);
dispatcherTimer.Tick = DispatcherTimer_Tick;
dispatcherTimer.Start();
}
private void DispatcherTimer_Tick(object? sender, EventArgs e)
{
PerformanceCounter upTime = new PerformanceCounter("System", "System Up Time");
upTime.NextValue();
TimeSpan ts = TimeSpan.FromSeconds(upTime.NextValue());
UpTime.Text = "UpTime: " ts.Days ":" ts.Hours ":" ts.Minutes ":" ts.Seconds;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/438278.html
