我發現在WPF最好的解決辦法是使用DispatcherTimer:
private readonly DispatcherTimer _dispatcherTimer;
public MyClass()
{
InitializeComponent();
WBrowser.Navigate(loginUri);
_dispatcherTimer = new DispatcherTimer();
_dispatcherTimer.Tick += dispatcherTimer_Tick;
_dispatcherTimer.Interval = new TimeSpan(0, 0, 0, 0, 200);
_dispatcherTimer.Start();
}
private void dispatcherTimer_Tick(object sender, EventArgs e)
{
if (WBrowser.Source == null)
{
_dispatcherTimer.Stop();
Close();
}
}
protected override void OnClosed(EventArgs e)
{
base.OnClosed(e);
if (_dispatcherTimer.IsEnabled)
{
_dispatcherTimer.Stop();
}
}
private void WBrowser_OnNavigated(object sender, System.Windows.Navigation.NavigationEventArgs e)
{
if(!_dispatcherTimer.IsEnabled)
{
_dispatcherTimer.Start();
}
}
這是正確的,但您必須使用P/Invoke調用來實現此目的(WebBrowser控件不公開此事件)。 – CedX 2011-12-28 18:13:00
@CédricBelin這是一個尋找和使用正確的界面(來自SHDocVw)和鑄造的問題。 – 2011-12-28 18:40:06
任何人都可以詳細說明「你可以使用」這個嗎? – teynon 2013-05-22 15:26:08