private void ButtonDeletion_Click(object sender, EventArgs e) { if (MessageBox.Show("Do you make sure?", "Confirmation", MessageBoxButtons.OKCancel) == DialogResult.OK) { var fileProcessor = new FileProcessor(); fileProcessor.DeletionSuccess += (file) => { DataAccessHelper.Delete(file.FullName); var selected = ResultDataSource.Where(it => it.FilePath == file.FullName); for (int i = 0; i < selected.Count(); i++) { ResultDataSource.Remove(selected.ElementAt(i)); } }; fileProcessor.NewMessageArrived += (o) => { Library.Message message; if (o.TryDequeue(out message)) { DataAccessHelper.Add(new DataAccess.Message() { FolderPath = message.FolderPath, FilePath = message.FilePath, ExceptionMessage = message.Exception?.Message, ExceptionLog = message.Exception?.ToString(), MessageType = MessageType.Deletion }); } }; fileProcessor.Delete(GeneratorFileInfos(ResultDataSource.Where(it => it.Checked))); DataGridViewResult.Refresh(); } }