/// <summary> /// Cancel the ListViewLocker task, if applicable. /// </summary> /// <param name="lvi">The ListViewLocker that should be updated.</param> /// <returns>A boolean to represent whether the task was cancelled or not.</returns> private static bool CancelSelectedTask(ListViewLocker lvi) { if (lvi == null) { return(false); } if (!lvi.IsRunning()) { return(false); } lvi.CancelTask(); return(true); }
private async void unlockToolStripMenuItem1_Click(object sender, EventArgs e) { if (lsvItems.SelectedItems.Count == 0) { return; } Language l = _languageManager.GetLanguage(); ListViewItem selected = lsvItems.SelectedItems[0]; ListViewLocker lvl = _lvlManager.FindListViewLocker(selected.Text); CancelSelectedTask(selected); await Task.Run(() => { while (lvl.IsRunning()) { } }); try { SetLoading(selected, 1); lvl.SetRunning(true); await lvl.Unlock(); if (!lvl.HasCancelled()) { selected.SubItems[1].ForeColor = Color.Green; selected.SubItems[1].Text = l.MsgSuccessfullyUnlocked; } else { SetCancelled(selected); } } catch (Exception ex) { MessageBoxAdv.Show(ex.Message + Environment.NewLine + ex.StackTrace, "DeadLock", MessageBoxButtons.OK, MessageBoxIcon.Error); selected.SubItems[1].ForeColor = Color.Red; selected.SubItems[1].Text = l.MsgCouldNotUnlock; } finally { lvl.SetRunning(false); } lsvDetails.AutoResizeColumns(ColumnHeaderAutoResizeStyle.ColumnContent); lsvDetails.AutoResizeColumns(ColumnHeaderAutoResizeStyle.HeaderSize); }
/// <summary> /// Cancel a ListViewLocker task, if applicable. /// </summary> /// <param name="lvi">The ListViewItem that is associated with a ListViewLocker.</param> /// <returns>A boolean to represent whether the task was cancelled or not.</returns> private bool CancelSelectedTask(ListViewItem lvi) { ListViewLocker lvl = _lvlManager.FindListViewLocker(lvi.Text); if (lvl == null) { return(false); } if (!lvl.IsRunning()) { return(false); } lvl.CancelTask(); return(true); }
private async void moveToolStripMenuItem_Click(object sender, EventArgs e) { if (lsvItems.SelectedItems.Count == 0) { return; } ListViewItem selected = lsvItems.SelectedItems[0]; ListViewLocker lvl = _lvlManager.FindListViewLocker(selected.Text); Language l = _languageManager.GetLanguage(); CancelSelectedTask(selected); await Task.Run(() => { while (lvl.IsRunning()) { } }); try { SetLoading(selected, 1); lvl.SetRunning(true); await lvl.Move(); if (!lvl.HasCancelled()) { selected.SubItems[1].ForeColor = Color.Green; selected.SubItems[1].Text = l.MsgSuccessfullyMoved; } else { SetCancelled(selected); } } catch (Exception ex) { MessageBoxAdv.Show(ex.Message, "DeadLock", MessageBoxButtons.OK, MessageBoxIcon.Error); selected.SubItems[1].ForeColor = Color.Red; selected.SubItems[1].Text = l.MsgCouldNotMove; } finally { lvl.SetRunning(false); } }
private async void lsvItems_DoubleClick(object sender, EventArgs e) { if (lsvItems.SelectedItems.Count == 0) { return; } lsvDetails.Items.Clear(); ListViewLocker lvl = (ListViewLocker)lsvItems.SelectedItems[0]; Language l = LanguageManager.GetLanguage(); try { CancelSelectedTask(lvl); await Task.Run(() => { while (lvl.IsRunning()) { } }); lvl.SetLocker(new List <ProcessLocker>()); if (!File.Exists(lvl.Text) && !Directory.Exists(lvl.Text)) { imgFileIcons.Images.RemoveByKey(lvl.Text); lsvItems.Items.Remove(lvl); return; } SetLoading(lvl, 1); SetLoading(lvl, 2); lvl.SetRunning(true); List <ProcessLocker> lockers = await lvl.GetLockerDetails(); if (!lvl.HasCancelled()) { if (lockers.Count == 0) { lvl.SubItems[1].Text = l.MsgUnlocked; lvl.SubItems[1].ForeColor = Color.Green; } else { lvl.SubItems[1].Text = l.MsgLocked; lvl.SubItems[1].ForeColor = Color.Red; } lvl.SubItems[2].Text = lvl.HasOwnership() ? l.BarItemOwnershipTrue : l.BarItemOwnershipFalse; foreach (ProcessLocker p in lockers) { ListViewItem lvi = new ListViewItem { Text = p.GetFileName() }; lvi.SubItems.Add(p.GetFilePath()); lvi.SubItems.Add(p.GetProcessId().ToString()); lsvDetails.Items.Add(lvi); } lvl.SetLocker(lockers); lsvDetails.AutoResizeColumns(ColumnHeaderAutoResizeStyle.ColumnContent); lsvDetails.AutoResizeColumns(ColumnHeaderAutoResizeStyle.HeaderSize); } else { lvl.SetLocker(new List <ProcessLocker>()); SetCancelled(lvl); } } catch (Exception ex) { MessageBoxAdv.Show(ex.Message, "DeadLock", MessageBoxButtons.OK, MessageBoxIcon.Error); } finally { lvl.SetRunning(false); } }