private void DiskChartUpdater_DoWork(object sender, DoWorkEventArgs e) { if (!(sender is BackgroundWorker owner)) { return; } foreach (var drive in DriveInfo.GetDrives()) { if (!PathEx.LocalDir.StartsWithEx(drive.Name)) { continue; } var free = drive.TotalFreeSpace; owner.ReportProgress(0, free); owner.ReportProgress(25, drive.TotalSize - free); var apps = DirectoryEx.GetSize(PathEx.LocalDir); var other = drive.TotalSize - free - apps; owner.ReportProgress(0, free); owner.ReportProgress(50, apps); owner.ReportProgress(100, other); break; } }