mrcnn, Извините пожалуйста, но я уже дуб-дубом.. Можете сказать толком что в этом участке менять ?
Код:
' Получить собственно файл
If PathForDownl = "" Then
FlName = IO.Path.GetTempPath & IO.Path.GetFileName(fl)
Else
PathForDownloads = GetMaxPath(PathForDownloads)
If IO.Directory.Exists(PathForDownloads) = False Then
IO.Directory.CreateDirectory(PathForDownloads)
End If
FlName = PathForDownloads & "\" & IO.Path.GetFileName(fl)
End If
If IO.Path.GetFileName(FlName).Split(IO.Path.GetInvalidFileNameChars).Length > 1 Then
FlName = IO.Path.GetTempPath & GetUIN() & ".tmp"
End If
' Получить асинхронно
If WaitForDownload = False Then
thr = New Threading.Thread(AddressOf AsyncDownload)
thr.Start(myHttpWebResponse.GetResponseStream)
' Получить синхронно
Else
FileDownloading = True
Dim myStreamReader As New IO.BinaryReader(myHttpWebResponse.GetResponseStream)
Dim all As New System.Collections.Generic.List(Of Byte)
Do
' Собственно получения порции данных
Dim bts() As Byte = myStreamReader.ReadBytes(BufferSize)
If bts.Length = 0 Then Exit Do
all.AddRange(bts)
' Вызов события Идет прием данных
ReceiveProgressInvoke(all.Count)
Loop
DownloadSuccess(all)
End If
End Sub
' Функция реализующая поток, который скачивайт файл порциями BufferSize
Sub AsyncDownload(ByVal stream As Object)
FileDownloading = True
Dim myStreamReader As New IO.BinaryReader(stream)
Dim all As New System.Collections.Generic.List(Of Byte)
Do
' Всякие Прерывания и Паузы потока
If FileDownloading = False Then DownloadCancelledInvoke() : myStreamReader.Close() : Exit Sub
While DownloadPause
System.Windows.Forms.Application.DoEvents()
If FileDownloading = False Then DownloadCancelledInvoke() : myStreamReader.Close() : Exit Sub
End While
' Собственно получения порции данных
Dim bts() As Byte = myStreamReader.ReadBytes(BufferSize)
If bts.Length = 0 Then Exit Do
all.AddRange(bts)
' Вызов события Идет прием данных
ReceiveProgressInvoke(all.Count)
Loop
DownloadSuccess(all)
End Sub