补全其他参数的下载参数
运行 停止 暂停的防呆操作
This commit is contained in:
144
CapMachine.Wpf/Models/ProRunTimeCalc.cs
Normal file
144
CapMachine.Wpf/Models/ProRunTimeCalc.cs
Normal file
@@ -0,0 +1,144 @@
|
||||
using Prism.Mvvm;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Timers;
|
||||
using System.Windows;
|
||||
using System.Windows.Threading;
|
||||
|
||||
namespace CapMachine.Wpf.Models
|
||||
{
|
||||
/// <summary>
|
||||
/// 程序运行时间统计
|
||||
/// </summary>
|
||||
public class ProRunTimeCalc : BindableBase
|
||||
{
|
||||
public ProRunTimeCalc()
|
||||
{
|
||||
//秒触发一次
|
||||
CycleTimer = new System.Timers.Timer(1000);
|
||||
CycleTimer.Elapsed += ProRunCycleAction;
|
||||
CycleTimer.AutoReset = true;
|
||||
CycleTimer.Enabled = true;
|
||||
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 程序运行时间周期统计
|
||||
/// </summary>
|
||||
/// <param name="sender"></param>
|
||||
/// <param name="e"></param>
|
||||
/// <exception cref="NotImplementedException"></exception>
|
||||
private void ProRunCycleAction(object? sender, ElapsedEventArgs e)
|
||||
{
|
||||
Application.Current.Dispatcher.BeginInvoke(new Action(() =>
|
||||
{
|
||||
CalcTime();
|
||||
}));
|
||||
|
||||
//CycleTimer.Stop();
|
||||
|
||||
//CycleTimer.Start();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 统计时间
|
||||
/// </summary>
|
||||
private void CalcTime()
|
||||
{
|
||||
ProEndDt = DateTime.Now;
|
||||
|
||||
ProRunTimeStr = ConvertSecToDHMS((int)((ProEndDt - ProStartDt).TotalSeconds - PauseTotalSecTime));
|
||||
}
|
||||
|
||||
private string ConvertSecToDHMS(int totalSeconds)
|
||||
{
|
||||
// 驗證非負(可根據需求調整)
|
||||
if (totalSeconds < 0)
|
||||
return "00:00:00:00";
|
||||
|
||||
int days = totalSeconds / 86400; // 1天 = 86400秒
|
||||
int remainingSeconds = totalSeconds % 86400;
|
||||
|
||||
int hours = remainingSeconds / 3600; // 1小時 = 3600秒
|
||||
remainingSeconds %= 3600;
|
||||
|
||||
int minutes = remainingSeconds / 60; // 1分鐘 = 60秒
|
||||
int seconds = remainingSeconds % 60;
|
||||
|
||||
// 格式化輸出,確保時、分、秒為兩位數
|
||||
return $"{days}天:{hours:D2}时:{minutes:D2}分:{seconds:D2}秒";
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 开始计时
|
||||
/// </summary>
|
||||
public void StartProRunTime()
|
||||
{
|
||||
ProStartDt = DateTime.Now;
|
||||
CycleTimer.Start();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 暂停计时
|
||||
/// </summary>
|
||||
public void PauseProRunTime()
|
||||
{
|
||||
CycleTimer.Stop();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 继续计时
|
||||
/// </summary>
|
||||
public void ContinueProRunTime()
|
||||
{
|
||||
CycleTimer.Start();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 结束计时
|
||||
/// </summary>
|
||||
public void EndProRunTime()
|
||||
{
|
||||
CycleTimer.Stop();
|
||||
CalcTime();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 周期定时器
|
||||
/// </summary>
|
||||
private System.Timers.Timer CycleTimer { get; set; }
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 程序开始的时间
|
||||
/// </summary>
|
||||
public DateTime ProStartDt { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 程序结束的时间
|
||||
/// </summary>
|
||||
public DateTime ProEndDt { get; set; }
|
||||
|
||||
|
||||
private string? _ProRunTimeStr;
|
||||
/// <summary>
|
||||
/// 程序运行时间字符串
|
||||
/// </summary>
|
||||
public string? ProRunTimeStr
|
||||
{
|
||||
get { return _ProRunTimeStr; }
|
||||
set { _ProRunTimeStr = value; RaisePropertyChanged(); }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 全部的暂停的时间
|
||||
/// 可能暂停多次
|
||||
/// </summary>
|
||||
public int PauseTotalSecTime { get; set; }
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user