![]() |
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 2001 года мы решили создать сайт и форум, которые смогут помочь как начинающим, так и продвинутым пользователям разобраться в операционных системах. В 2004-2006г наш проект был одним из самых крупных ИТ ресурсов в рунете, на пике нас посещало более 300 000 человек в день! Наша документация по службам Windows и автоматической установке помогла огромному количеству пользователей и сисадминов. Мы с уверенностью можем сказать, что внесли большой вклад в развитие ИТ сообщества рунета. Но... время меняются, приоритеты тоже. И, к сожалению, пришло время сказать До встречи! После долгих дискуссий было принято решение закрыть наш проект. 1 августа форум переводится в режим Только чтение, а в начале сентября мы переведем рубильник в положение Выключен Огромное спасибо за эти 24 года, это было незабываемое приключение. Сказать спасибо и поделиться своей историей можно в данной теме. С уважением, ваш призрачный админ, BigMac... |
|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » VBS/WSH/JS - Помогите пожалуйста по VB |
|
VBS/WSH/JS - Помогите пожалуйста по VB
|
Пользователь Сообщения: 144 |
В общем имеется код, который скачивает файл с интернета сначала в память, а потом в конце кладёт его в папку. После того как он его скачал все функции дальше работают нормально.
' Получить асинхронно 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 Delegate Sub dDownloadSuccess(ByVal lst As System.Collections.Generic.List(Of Byte)) Sub DownloadSuccess(ByVal lst As System.Collections.Generic.List(Of Byte)) If Me.InvokeRequired Then Dim d As New dDownloadSuccess(AddressOf DownloadSuccess) Me.Invoke(d, New Object() {lst}) Else ' Собственно завершение загрузки IO.File.WriteAllBytes(FlName, lst.ToArray) ResultQuery = FlName ' Снимаем синхблок FileDownloading = False ' Вызов события ПолученОтвет RaiseEvent ReceivedResponse(Me, New EventArgs) End If End Sub Пишет ошибку. Произошла непредвиденная ошибка. Невозможно обратится к файлу. Проверьте правильность написания пути Ошибка: Недопустимый вызов или аргумент процедуры. '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' 'Открыть файл ' Поток в файл (объявление) Dim fstr As New System.IO.FileStream(FlName, System.IO.FileMode.Create) Dim dnl_size As Long = 0 'Открытие потока в файл 'fstr = System.IO.File.OpenWrite(FlName) ' Получить асинхронно If WaitForDownload = False Then fstr.Close() 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 fstr.Seek(0, System.IO.SeekOrigin.End) For Each bytevalue As Byte In bts fstr.WriteByte(bytevalue) fstr.Seek(0, System.IO.SeekOrigin.End) dnl_size = dnl_size + 1 Next 'all.AddRange(bts) ' Вызов события Идет прием данных ReceiveProgressInvoke(dnl_size) Loop DownloadSuccess2() fstr.Close() 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) Dim fstr As New System.IO.FileStream(FlName, System.IO.FileMode.Create) Dim dnl_size As Long = 0 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 fstr.Seek(0, System.IO.SeekOrigin.End) For Each bytevalue As Byte In bts fstr.WriteByte(bytevalue) fstr.Seek(0, System.IO.SeekOrigin.End) dnl_size = dnl_size + 1 Next 'all.AddRange(bts) ' Вызов события Идет прием данных ReceiveProgressInvoke(dnl_size) Loop DownloadSuccess2() fstr.Close() End Sub ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' Delegate Sub dDownloadSuccess(ByVal lst As System.Collections.Generic.List(Of Byte)) Sub DownloadSuccess2() ' Собственно завершение загрузки ResultQuery = FlName ' Снимаем синхблок FileDownloading = False ' Вызов события ПолученОтвет RaiseEvent ReceivedResponse(Me, New EventArgs) End Sub |
|
Отправлено: 14:00, 16-08-2015 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Разное - помогите, пожалуйста по питону | r-studio | Программирование и базы данных | 9 | 01-09-2014 12:50 | |
VPN - [решено] VPN - Помогите пожалуйста настроить удалённое подключение По RAdmin. | BROTHERHOOD | Сетевые технологии | 11 | 26-01-2011 09:22 | |
Помогите с вопросом по информатике пожалуйста :) | Megacucumber | Флейм | 5 | 04-11-2009 16:44 | |
Помогите пожалуйста по Восстановлению EFS! | Andrey_MAP | Microsoft Windows 2000/XP | 6 | 17-07-2006 14:35 |
|