Tasks.WhenAll(tasks) не перехватывает никаких исключенийC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Tasks.WhenAll(tasks) не перехватывает никаких исключений

Сообщение Anonymous »

Я новичок в C# и Windows Forms.
Я использую библиотеку syncfusion C# для шифрования/дешифрования файлов Word.
Я использую Задачи Async/Await для пакетного шифрования файлов.
У меня нет проблем с шифрованием/дешифрованием одного файла или с шифрованием нескольких файлов.
Я столкнулся проблема при попытке расшифровать несколько файлов Word или массово.
При расшифровке одного файла с неверным паролем получаю исключение и все работает нормально.
Но во время массового расшифрования файлов с использованием await Task.WhenAll(tasks) внутри блока try-catch я не получаю никаких исключений, в то время как из первой задачи (первого файла для расшифровки) я должен получить исключение, потому что пароль неверный.
В течение всей недели я пробовал большинство предложенных решений везде, но безуспешно и не знаю, что мне делать.
Большое спасибо!
Код должен выдать исключение, если первая задача не выполнена, но это не так.
GetPathOrExtention gte = new GetPathOrExtention();

private void DecryptDOCXFiles(string fileName)
{
FileStream inputStream = new FileStream(fileName, FileMode.Open, FileAccess.Read);
WordDocument document = new WordDocument(inputStream, FormatType.Docx, TbDecPwd1.Text);

FileStream outputStream = new FileStream(gte.GetDirPath(fileName) + "\\" + gte.GetfileName(fileName).Replace("Encrypted-", ""), FileMode.Create, FileAccess.Write);
document.Save(outputStream, FormatType.Docx);
inputStream.Close();
outputStream.Close();
}

private async Task DecryptWordFiles()
{
OpenFileDialog ofd = new OpenFileDialog();
ofd.Filter = "docx files (*.docx)|*.docx|All files (*.*)|*.*";
ofd.Multiselect = true;
var tasks = new List();

if (TbDecPwd1.Text != "" && ofd.ShowDialog() == DialogResult.OK)
{
foreach (string file in ofd.FileNames)
{
if (gte.GetFileExtension(file) != ".docx")
{
LblProceeding.ResetText();
MessageBox.Show("Files version is not supported!" + '\n' + '\n' + "Only Word version 2019 and above are supported!", "P-GEN", MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}

if (gte.GetFileExtension(file) == ".docx")
{
LblProceeding.Text = "Proceeding... Do not exit the software!";
var task = Task.Run(() => DecryptDOCXFiles(file)).ContinueWith(p => progressBar1.PerformStep());
tasks.Add(task);
}
}
}
try
{
await Task.WhenAll(tasks);
LblProceeding.Text = "Done!";
MessageBox.Show("Files Successfully Decrypted!", "P-GEN", MessageBoxButtons.OK, MessageBoxIcon.Information);
LblProceeding.ResetText();
progressBar1.Visible = false;
}

catch (AggregateException)
{
LblProceeding.ResetText();
MessageBox.Show("Ensure the password is correct!" + '\n' + '\n' + "Ensure the files you want to decrypt are not opened in another software!", "P-GEN", MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}

catch (Exception)
{
LblProceeding.ResetText();
MessageBox.Show("Ensure the password is correct!" + '\n' + '\n' + "Ensure the files you want to decrypt are not opened in another software!", "P-GEN", MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
}

private void BtnWordFilesDec_Click(object sender, EventArgs e)
{
_ = DecryptWordFiles();
}


Подробнее здесь: https://stackoverflow.com/questions/785 ... -exception
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Tasks.WhenAll(tasks) не перехватывает никаких исключений
    Anonymous » » в форуме C#
    0 Ответы
    55 Просмотры
    Последнее сообщение Anonymous
  • Как реализовать собственный Task.WhenAll, сохраняющий порядок исключений?
    Anonymous » » в форуме C#
    0 Ответы
    15 Просмотры
    Последнее сообщение Anonymous
  • Невозможно найти версию System.Threading.Tasks.Dataflow, совместимую с Dse 2.10.4 System.Threading.Tasks.Dataflow' (>= 4
    Anonymous » » в форуме C#
    0 Ответы
    29 Просмотры
    Последнее сообщение Anonymous
  • Невозможно найти версию System.Threading.Tasks.Dataflow, совместимую с Dse 2.10.4 System.Threading.Tasks.Dataflow' (>= 4
    Anonymous » » в форуме C#
    0 Ответы
    25 Просмотры
    Последнее сообщение Anonymous
  • Невозможно найти версию System.Threading.Tasks.Dataflow, совместимую с Dse 2.10.4 System.Threading.Tasks.Dataflow' (>= 4
    Anonymous » » в форуме C#
    0 Ответы
    30 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C#»