У меня есть многопоточное приложение, которое использует элемент управления WebBrowser, размещенный в простом окне WPF.
В первый раз, когда я создаю окно и отображаю его - все в порядке.Однако - когда я пытаюсь открыть его несколько раз (обычно в третий раз ...), я получаю и Исключение недопустимой операции, когда пытаюсь вызвать метод Navigate WebBrowser.
Я попытался прочитать о некоторыхэто и я думаю, что это связано с DEP и COM-объектом, стоящим за WebBrowser.
Я подумал, что, возможно, это связано с предыдущими WebBrowsers, поэтому я решил использовать его по-разному, например::
brws.DocumentCompleted -= new System.Windows.Forms.
WebBrowserDocumentCompletedEventHandler(brws_DocumentCompleted);
brws.Stop();
brws.DocumentText = "";
this.brws.Dispose();
Но это не помогает ...
Может, кто-нибудь видел эту ошибку и знает, как ее решить?
Вот точные данные об ошибке:
Исключение не обработано: System.AccessViolationException: System.AccessViolationException: Попытка чтения или записи в защищенную память.Это часто указывает на то, что другая память повреждена.
at- System.Windows.Forms.UnsafeNativeMethods.IWebBrowser2.Navigate2 (Object & U RL, Object & flags, Object & targetFrameName, Object & postData, Object & headers)
at- System.Windows.Forms.WebBrowser.PerformNavigate2 (Object & URL, Object & flags, Object & targetFrameName, Object & postData, Object & headers)
at- System.Windows.Forms.WebBrowser.PerformNavigateHelper (StringurlString, B new, newWindow, String targetFrameName, Byte [] postData, строковые заголовки)
at- System.Windows.Forms.WebBrowser.Navigate (String urlString)
at- Slider.HtmlWindow..ctor (String url) at- D: \ rapid \ Projects \ HTMLSlider \ Slide r \ HtmlWindow.xaml.cs: строка 24
at- Slider.Program. <> c_ DisplayClasse.b _3 () at- D: \ rapid \ Projects \ HTMLSlider \ Slider \ Program.cs: строка 123
at- System.Threading.ThreadHelper.ThreadStart_Context (состояние объекта)
в- System.Threading.ExecutionContext.Run (ExecutionContext executeContext, обратный вызов ContextCallback, состояние объекта)
at- System.Threading.ThreadHelper.ThreadStart ()