AccessViolationException

Язык Visual Basic на платформе .NET.

Модераторы: Ramzes, Sebas

noob4ever
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 117
Зарегистрирован: 05.01.2006 (Чт) 0:58

AccessViolationException

Сообщение noob4ever » 02.03.2010 (Вт) 18:28

Добрый день. В программе несколько webbrowser, и они без остановки собирают ссылки с сайтов из списка, И вот вываливается ошибка постоянно после 3-5 минут работы, Пробывал многое что, все равно, куда копать? может это баг какой-то?

AccessViolationException не обработано
Попытка чтения или записи в защищенную память. Это часто свидетельствует о том, что другая память повреждена.

StackTrace
в System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)
в System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(Int32 dwComponentID, Int32 reason, Int32 pvLoopData)
в System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
в System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
в System.Windows.Forms.Application.Run(ApplicationContext context)
в Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.OnRun()
в Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.DoApplicationModel()
в Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.Run(String[] commandLine)
в dparser.My.MyApplication.Main(String[] Args) в 17d14f5c-a337-4978-8281-53493378c1071.vb:строка 81
в System.AppDomain._nExecuteAssembly(Assembly assembly, String[] args)
в System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
в Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
в System.Threading.ThreadHelper.ThreadStart_Context(Object state)
в System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
в System.Threading.ThreadHelper.ThreadStart()

MIT
Мега гуру
Мега гуру
Аватара пользователя
 
Сообщения: 2211
Зарегистрирован: 17.09.2006 (Вс) 22:46

Re: AccessViolationException

Сообщение MIT » 02.03.2010 (Вт) 19:03

Код в студию.

Я, помниться, тоже мучился с WB и тоже с памятью. Ситуация (обычно) сложная и требует разбирательства.
Единственное мне кажется, что ты WB используешь совсем не по назначению. Зацени HttpWebRequest.
Изображение
You can change your face, but can`t change your mind. No matter what you do.
Создайте еще более понятный интерфейс и мир создаст еще более тупого юзера. (с) Баш

noob4ever
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 117
Зарегистрирован: 05.01.2006 (Чт) 0:58

Re: AccessViolationException

Сообщение noob4ever » 02.03.2010 (Вт) 19:33

MIT писал(а):Код в студию.

Я, помниться, тоже мучился с WB и тоже с памятью. Ситуация (обычно) сложная и требует разбирательства.
Единственное мне кажется, что ты WB используешь совсем не по назначению. Зацени HttpWebRequest.


код большой чутка сократил.

Код: Выделить всё
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

'создаем веббраузеры
For i = 0 To potokcol
                wb(i) = New WebBrowser()
                wb(i).Tag = i
                AddHandler wb(i).DocumentCompleted, AddressOf wbCompleted
Next i

'запускаем их
For i = 0 To potokcol
                    MB.box(i) = links.curpos
                    wb(i).Navigate(links.link(links.curpos))
                    links.curpos += 1
Next
End Sub

Private Sub wbCompleted(ByVal sender As System.Object, ByVal e As System.Windows.Forms.WebBrowserDocumentCompletedEventArgs)

Dim result = CType(sender, WebBrowser).Tag

If wb(result).Url.AbsoluteUri = links.link(MB.box(result)) Then
                Dim pos As Integer
                Dim curhref As String
                Dim wc As WebBrowser = DirectCast(sender, WebBrowser)
                pos = MB.box(result)

For i = 0 To wc.Document.GetElementsByTagName("a").Count - 1
              curhref = wc.Document.GetElementsByTagName("a").Item(i).GetAttribute("href")
next i

'после сборки ссылок, текущий браузер идет на следующий адрес                 
                MB.box(result) = links.curpos
                wb(result).Navigate(links.link(links.curpos))
                links.curpos += 1
end if
End Sub


примерно так

MIT
Мега гуру
Мега гуру
Аватара пользователя
 
Сообщения: 2211
Зарегистрирован: 17.09.2006 (Вс) 22:46

Re: AccessViolationException

Сообщение MIT » 02.03.2010 (Вт) 20:33

Изображение
You can change your face, but can`t change your mind. No matter what you do.
Создайте еще более понятный интерфейс и мир создаст еще более тупого юзера. (с) Баш

noob4ever
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 117
Зарегистрирован: 05.01.2006 (Чт) 0:58

Re: AccessViolationException

Сообщение noob4ever » 02.03.2010 (Вт) 21:02


вы правы, но времени нету разбираться, да и зачем, меня все устраивает кроме этой ошибки :|

MIT
Мега гуру
Мега гуру
Аватара пользователя
 
Сообщения: 2211
Зарегистрирован: 17.09.2006 (Вс) 22:46

Re: AccessViolationException

Сообщение MIT » 02.03.2010 (Вт) 21:46

Ну раз в целях конспирации почти весь код тобой был удален, то рассказать по нему дельного особо ничего не могу.
Упростил до рекурсивного выполнения:
Код: Выделить всё
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
   For i = 0 To potokcol - 1
      wb(i) = New WebBrowser()
      wb(i).Tag = i
      AddHandler wb(i).DocumentCompleted, AddressOf wbCompleted
   Next i
   For i = 0 To potokcol - 1
      wb(i).Navigate("http://bbs.vbstreets.ru") 'links.link(links.curpos))

   Next
   End Sub
   Private Sub wbCompleted(ByVal sender As System.Object, ByVal e As System.Windows.Forms.WebBrowserDocumentCompletedEventArgs)
      Dim result = CType(sender, WebBrowser).Tag
      Dim pos As Integer
      Dim curhref As String
      Dim wc As WebBrowser = DirectCast(sender, WebBrowser)

      For i = 0 To wc.Document.GetElementsByTagName("a").Count - 1
         curhref = wc.Document.GetElementsByTagName("a").Item(i).GetAttribute("href")
      Next i
      wb(result).Navigate("http://bbs.vbstreets.ru")
   End Sub
   Dim wb() As WebBrowser
   Dim potokcol = 10
   Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
      ReDim wb(potokcol - 1)
   End Sub
End Class

За 20 минут работы воспроизвести ошибку не удалось.
Изображение
You can change your face, but can`t change your mind. No matter what you do.
Создайте еще более понятный интерфейс и мир создаст еще более тупого юзера. (с) Баш


Вернуться в Visual Basic .NET

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 17

    TopList