using System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Text; using System.Threading; using System.Threading.Tasks; namespace ImageCompressor { /// /// 用来总的记录各个线程处理照片的进度,以及标记线程运行结果 /// class CountProgress { ImageCompressorForm owner; public CountProgress(int totalCount, ImageCompressorForm owner) { this.TotalCount = totalCount; this.owner = owner; FailedInfos = new List(); } public ReaderWriterLock RWLock = new ReaderWriterLock(); /// /// 总的处理了的照片数量 /// public int ProcessedCount => SuccessCount + FailedCount + SkipCount; /// /// 处理过成功的照片数量 /// public int SuccessCount { get; set; } = 0; /// /// 处理过失败的照片数量 /// public int FailedCount { get; set; } = 0; /// /// 已经跳过的照片数量 /// public int SkipCount { get; set; } = 0; /// /// 处理失败的信息 /// public List FailedInfos { get; set; } /// /// 需要处理的照片总数 /// public int TotalCount { get; private set; } /// /// 是否已经处理完所有照片 /// public bool Finished => ProcessedCount == TotalCount; /// /// 处理前照片的大小总和 /// public long PreSizeKBSum { get; set; } = 0; /// /// 压缩后照片的大小总和 /// public long PostSizeKBSum { get; set; } = 0; /// /// 计时器 /// public Stopwatch stopwatch { get; set; } = new Stopwatch(); /// /// Update Data To Winform /// public void Update() { owner.SetProgressValue(ProcessedCount); if (Finished) { stopwatch.Stop(); owner.ShowReport(); } } } }