2017-01-09 130 views
2

我在我的WPF應用程序中使用WebBrowser。我用它來查看pdf文件。但是在查看了50個文件後,該應用程序會拋出異常。所以我們決定在打開下一個pdf之前處理webbrowser。 事情是我不知道該怎麼做。當我處理web瀏覽器時,它是未綁定的,並且不再查看pdf。它使得感知,但如何正確地做到這一點? 這裏是我的代碼:WPF MVVM WebBrowser配置

public static void BindableSourcePropertyChanged(DependencyObject o, DependencyPropertyChangedEventArgs e) 
    { 
     WebBrowser browser = o as WebBrowser; 
     if (browser != null) 
     { 
      try 
      { 
       browser.Dispose(); 
       browser = null; 
       browser = new WebBrowser(); 
      } 
      catch 
      { 
      } 

      string uri = e.NewValue as string; 


      try 
      { 
       if (uri != null) 
       { 
        browser.Navigate(new Uri(uri, UriKind.Absolute)); 
       } 
      } 
      catch (Exception exception) 
      { 
       ExceptionPolicy.HandleException(exception, ExceptionPolicies.General); 
      } 
     } 
    } 

和XAML部分:

<WebBrowser Grid.Row="0" Behaviour:WebBrowserBehaviour.BindableSource="{Binding WebBrowserData}" 
       LoadCompleted="WebBrowser_LoadCompleted" /> 
+0

嘗試將Source屬性設置爲null,如下所示:http://stackoverflow.com/questions/9162240/webbrowser-is-not-disposing-itself – mm8

+0

謝謝,但這不是正確的解決方案。它不釋放資源 – Brusinka

+0

在此處檢查DisposeWebBrowser()方法,然後:https://social.msdn.microsoft.com/Forums/vstudio/en-US/368755dd-0047-4a88-9951-ba0539266410/wpf-webbrowser-是不是妥善處理?forum = wpf – mm8

回答

0

基本上這個問題聽起來像是你有內存泄漏。爲了幫助識別它,您應該使用專爲此目的而設計的軟件。 RedAnt有一個很好的庫,我相信你有一個免費的試用版可以幫助你確定問題的確切原因。

要裝什麼可以做,在這裏建議後處理: How to dispose of a web browser control after show

不過,我會建議你證明這是問題首先通過觀看存儲或使用,旨在幫助檢測泄漏的工具。