private async Task RefreshAsync(CancellationToken cancellationToken, IProgress <Tuple <int, string> > progress, string uuid = null) => await Task.Run(() => { for (var i = 0; i < disks.Count; i++) { var disk = disks[i]; if (uuid != null && string.CompareOrdinal(uuid, disk.UUID) != 0) { continue; } progress.Report(new Tuple <int, string>(i * 100 / disks.Count, disk.Name)); if (cancellationToken.IsCancellationRequested) { break; } try { var vdi = Medium.OpenMedium(disk.Location, AccessMode.AccessMode_ReadOnly); vdi.RefreshState(); disk.Update(vdi); } catch { } Invoke(new Action <Guid>(UpdateItem), disk.Key); } progress.Report(new Tuple <int, string>(100, "")); }, cancellationToken);
private async void addCmd_Click(object sender, EventArgs e) { if (openFileDlg.ShowDialog(this) != DialogResult.OK) { return; } var m = Medium.OpenMedium(openFileDlg.FileName); m.Close(); await RefreshList(); }