Передача значений и из фонового работника

Я новичок-самоучка, экспериментирующий сАлгоритм шифрования RijndaelРанее я заставлял его работать очень хорошо, но после попытки запустить шифрование на фоновом рабочем месте для освобождения формы для пользователя я столкнулся с многочисленными проблемами.

Во-первых, я попытался просто поместить byval's, который я использовал в моем предыдущем коде, в фоновый рабочий, но я получил ошибку из-за его несовместимости.ByVal Direction As CryptoAction.

Чтобы было ясно, я пытался что-то вроде этого:

Private Sub bw_DoWork(ByVal sender As Object,ByVal strInputFile As String,
                                     ByVal strOutputFile As String,
                                     ByVal bytKey() As Byte,
                                     ByVal bytIV() As Byte,
                                     ByVal Direction As CryptoAction, ByVal e As DoWorkEventArgs)


    Dim worker As BackgroundWorker = CType(sender, BackgroundWorker)

    For i = 1 To 1
        If bw.CancellationPending = True Then
            e.Cancel = True
            Exit For
        Else

            'Encryption code goes here. 
end sub 

Но, как я уже сказал, мне сказали «Направление», поскольку CrytoAction не было совместимым. В интересах завершенности этот саб был:

Private Enum CryptoAction
        'Define the enumeration for CryptoAction.
        ActionEncrypt = 1
        ActionDecrypt = 2
    End Enum

Поэтому, чтобы заставить код работать, я сделал это, и я думаю, именно поэтому мои зашифрованные файлы расшифровываются в нечитаемый файл, и я иногда получаю сообщение об ошибке:Заполнение недействительно и не может быть удалено, при закрытии файлового потока.

Таким образом, я объявил bytkey, byIV, Direction и остальные в моем Public Class, это, как я уже сказал, пусть код выполняется. Но я могу вернуть файл после шифрования. Я думаю, что когда мой код ссылается на функции, вместо получения возвращенного значения, он получает пустую строку?

Вот код, который ссылается на функции, которые генерируют ключи, просто чтобы понять, что я имею в виду.

                 Select Case Direction
                        Case CryptoAction.ActionEncrypt
                            csCryptoStream = New CryptoStream(fsOutput, _
                            cspRijndael.CreateEncryptor(bytKey, bytIV), _
                            CryptoStreamMode.Write)

                    Case CryptoAction.ActionDecrypt
                        csCryptoStream = New CryptoStream(fsOutput, _
                        cspRijndael.CreateDecryptor(bytKey, bytIV), _
                        CryptoStreamMode.Write)
                End Select

Итак, мой вопрос в том, прав ли я, что код ссылается на обнуленные значения из объявлений, или код все еще ссылается на функции? И возможно ли добавить ByVal CryptoStream в фоновый рабочий?

Я искренне извиняюсь за размер моего вопроса, я везде искал решение, но не могу найти что-нибудь подходящее.

Ответы на вопрос(1)

Ваш ответ на вопрос