1

3つ質問してください

1) 以下の try で例外が発生した場合、リクエスト ストリームはそのまま自動的に閉じます。using

2)do I even need the requestStream.Close() and requestStream.Dispose() as it is in a using?

3) System.Net.FtpWebRequest を閉じる必要がありますか?

Try


    Dim rqst As System.Net.FtpWebRequest = DirectCast(System.Net.WebRequest.Create("ftp://1.com/text.txt"), System.Net.FtpWebRequest)
    rqst.Credentials = New System.Net.NetworkCredential("useb", "pass")
    rqst.Method = System.Net.WebRequestMethods.Ftp.UploadFile

    'Throw New ApplicationException("Exception Occured")
    Dim fle() As Byte = System.IO.File.ReadAllBytes("C:\test.txt")

    Using requestStream As Stream = rqst.GetRequestStream()


        requestStream.Write(fle, 0, fle.Length)
        requestStream.Close() 'do I need this?
        requestStream.Dispose() 'do I need this ?

    End Using

Catch ex As Exception

    MessageBox.Show(ex.Message.ToString())

End Try
4

2 に答える 2

1

いいえ、使用している場合は必要ありませんusingusingそのまま廃棄して使用します。また、「using」ステートメントを使用する理由は、オブジェクトが常に正しく破棄されるようにするためであり、これを確実に行うための明示的なコードは必要ありません。

Dispose メソッドは、制御フローが using ブロックを出るとすぐに呼び出されます。

于 2012-11-02T18:11:41.380 に答える
1

はい。using ステートメント内のコードの実行中に例外が発生した場合、ストリームは Catch ブロックに移動する前に破棄されます。

于 2012-11-02T22:16:52.190 に答える