이것은 ftp 서버에서 파일을 다운로드하기위한 스레드에서 실행되는 샘플 코드입니다. 그 안에, 사용자가 파일 다운로드를 멈추고 싶으면, 나는 스레드를 중단하려고했습니다. while 루프에서 컨트롤을 끊으면 끊습니다.FTP 파일 다운로드를 중지하십시오.
How to close the binaryreader and Stream, when reader in the middle of stream
Using response As FtpWebResponse = CType(ftp.GetResponse, FtpWebResponse)
Using input As Stream = response.GetResponseStream()
Using reader As New BinaryReader(input)
Try
Using writer As New BinaryWriter(File.Open(targetFI.FullName, FileMode.Create)) 'output)
Dim buffer(2048) As Byte '= New Byte(2048)
Dim count As Integer = reader.Read(buffer, 0, buffer.Length)
While count <> 0
writer.Write(buffer, 0, count)
count = reader.Read(buffer, 0, buffer.Length)
End While
writer.Close()
End Using
Catch ex As Exception
'catch error and delete file only partially downloaded
targetFI.Delete()
'Throw
ret = False
End Try
reader.Close()
End Using
input.Close()
End Using
response.Close()
End Using
답장 보내 주셔서 감사합니다. 사실 나는 정확히 무슨 말을하는지. 하지만 중간에있을 때 리더를 닫을 수 없습니다. 즉 while 루프에서 제어합니다. 독자가 스트림 위치의 끝에 있지 않기 때문에. 따라서 독자를 닫기 전에 전체 스트림을 읽어야합니다. 이 문제를 해결하는 방법 –
@Krishna - 제공 한 코드를 실행하려고했습니다. (하드 코드 된 값으로 누락 된 비트 몇 개를 채워야했습니다.) FTP 파일 다운로드를 "중단"하려고했습니다. 다운로드 중간. 그것은 나를 위해 잘 작동합니다. 여기에 사용한 VB 프로젝트 파일을 업로드했습니다 : http://tinyurl.com/y9ste3c – CraigTP
(계속)이 프로젝트를 실행하는 경우 "시작"버튼을 클릭하고 FTP 다운로드가 다운로드를 시작하는 데 몇 초 동안 기다린 후 (C : \\에서 qqq.qqq라는 파일에 쓰고 있으므로 진행 상황을 모니터 할 수 있습니다) "취소"버튼을 클릭하면 전체 파일 (예 : 스트림)을 기다리지 않고 다운로드를 중단해야합니다) 다운로드를 마칩니다. – CraigTP