2017-03-13 14 views
0

Im新到VB.Net。我試圖調試我的項目,但我得到一個警告:變量'csCryptoStream'在它被賦值之前使用。在運行時會導致空引用異常警告變量'csCryptoStream'在它被賦值之前被使用。空引用異常可能會導致在運行時

我該如何解決它?

Private Sub EncryptOrDecryptFile(strInputFile As String, strOutputFile As String, bytKey As Byte(), bytIV As Byte(), Direction As crypt.CryptoAction) 
    ' The following expression was wrapped in a checked-statement 
    Try 
     Me.fsInput = New FileStream(strInputFile, FileMode.Open, FileAccess.Read) 
     Me.fsOutput = New FileStream(strOutputFile, FileMode.OpenOrCreate, FileAccess.Write) 
     Me.fsOutput.SetLength(0L) 
     Dim bytBuffer As Byte() = New Byte(4096) {} 
     Dim lngBytesProcessed As Long = 0L 
     Dim lngFileLength As Long = Me.fsInput.Length 
     Dim cspRijndael As RijndaelManaged = New RijndaelManaged() 
     Me.pbStatus.Value = 0 
     Me.pbStatus.Maximum = 100 
     Dim csCryptoStream As CryptoStream 
     Select Case Direction 
      Case crypt.CryptoAction.ActionEncrypt 
       csCryptoStream = New CryptoStream(Me.fsOutput, cspRijndael.CreateEncryptor(bytKey, bytIV), CryptoStreamMode.Write) 
      Case crypt.CryptoAction.ActionDecrypt 
       csCryptoStream = New CryptoStream(Me.fsOutput, cspRijndael.CreateDecryptor(bytKey, bytIV), CryptoStreamMode.Write) 
     End Select 
     While lngBytesProcessed < lngFileLength 
      Dim intBytesInCurrentBlock As Integer = Me.fsInput.Read(bytBuffer, 0, 4096) 

Warning --->  csCryptoStream.Write(bytBuffer, 0, intBytesInCurrentBlock) 
      ' The following expression was wrapped in a unchecked-expression 
      lngBytesProcessed += CLng(intBytesInCurrentBlock) 
      ' The following expression was wrapped in a unchecked-expression 
      Me.pbStatus.Value = CInt(Math.Round(CDec(lngBytesProcessed)/CDec(lngFileLength) * 100.0)) 
     End While 
+0

給它分配一個值,你使用之前,它是可能先嚐試了明顯的事情... –

回答

0
  1. 聲明如下CryptoStream

    Dim csCryptoStream As CryptoStream = Nothing 
    
  2. 添加 'Case Else' 子句中的Case/Select

  3. 使用這個變量前檢查如果

    If Not IsNothing(csCryptoStream) 
        ' .... 
    End If 
    
+0

我還有其他的錯誤,當我嘗試調試:類型的未處理的異常「Microsoft.VisualBasic.ApplicationServices.NoStartupFormException」發生在Microsoft.VisualBasic.dll – user141531315

+0

@MuhammadFathan如果你在那條線上得到錯誤,然後嘗試將其聲明爲'新'即暗淡csCryptoStream作爲新的CryptoStream – alwaysVBNET

+0

非常感謝你,問題解決了。 – user141531315

相關問題