I am using SHDocVw to start new InternetExplorer instance and inject some code in every page user navigates to:
var internetExplorer = new InternetExplorer
{
Visible = true
};
RegisterEvents(internetExplorer);
internetExplorer.Navigate2(url);
RegisterEvents:
private static void RegisterEvents(InternetExplorer internetExplorer)
{
internetExplorer.NavigateComplete2 += new DWebBrowserEvents2_NavigateComplete2EventHandler(InternetExplorer_NavigateComplete2);
}
The problem is that it's not fired every time. Sometimes it works, sometimes not. This code is run in async method. Now the best part. I've tried with something like this:
private static void RegisterEvents(InternetExplorer internetExplorer)
{
Thread t = new Thread(() =>
{
internetExplorer.DocumentComplete += InternetExplorer_DocumentComplete;
while (true)
{
}
});
t.Start();
Debug.WriteLine("RegisterEvents");
}
Somehow it works everytime! But I don't like this infinite loop. What may be wrong with my first approach? Why second one works and how can I make it better?