タイトル : 自己レス 投稿日 : 2008/05/27(Tue) 14:15 投稿者 : AMI
> Dim uri As String = "ftp://yahoo.jp/ABC.pdf" > Dim myFile As String = "c:\aaaaaa.log" > Dim myPath(50) As String > > Dim req As WebRequest = WebRequest.Create(uri) > > Button1.Enabled = False > > req.Credentials = New NetworkCredential("userID", "PASS") > req.Method = WebRequestMethods.Ftp.DownloadFile ' 省略可 > > Using res As WebResponse = req.GetResponse() > Using st As Stream = res.GetResponseStream() > Using fs As New FileStream("c:\1.log", FileMode.Create) > Dim buf(1024) As Byte > Dim count As Integer = 0 > Do ' データ受信処理 > 'A count = st.Read(buf, 0, buf.Length) > fs.Write(buf, 0, count) > Loop While count <> 0 > End Using > End Using > End Using > > Using res As WebResponse = req.GetResponse() > Using st As Stream = res.GetResponseStream() > Using fs As New FileStream("c:\2.log", FileMode.Create) > Dim buf(1024) As Byte > Dim count As Integer = 0 > Do ' データ受信処理 > 'AA count = st.Read(buf, 0, buf.Length) > fs.Write(buf, 0, count) > Loop While count1 <> 0 > End Using > End Using > End Using > > いまVB2005で開発を行っております。 > FTP転送の件ですが、1件のファイルのダウンロードは成功したのですが、 > 連続して2個目3個目のファイルをダウンロードしようとして、 > ロジックをくんだのですが、 > 'AA count = st.Read(buf, 0, buf.Length) > ここの部分でエラーになります。 > エラー内容は > 「破棄されたオブジェクトにアクセスできません。 > オブジェクト名 'System.Net.Sockets.NetworkStream' です。」 > と表示されます。 > おそらく、一回目で、オブジェクトをつかっているので、 > 開放して再度構築しないといけないとおもうのですが、 > その方法がわかりません。 > ちなみに上記ロジックはデバッグしやすいように書いてます。 > 実際にはFOR文でダウンロード回数分だけまわしてやろうとかんがえております。 > アドバイスの程よろしくおねがいします。 上記件解決しました。 原因は、いままでは、同じプロシージャ内に記述していたのですが、 変更後はあたらしく「private sub・・・」でダウンロードの処理を作成して、 コマンドボタンがクリックされたときは、そこに飛ばすように変更したら、 連続しての処理が可能となりました。 なんでこのようなエラーがでたのかは、根本的にはわからなかったですが・・・ なにか原因のようなものがあれば情報の方よろしくおねがいします。 |