Webbrowser Control InvokeMember multithreading

Jan 18 2013 8:47 AM

Hello I hope someone can help me with this problem that I am having I have a class called myBrowser which inherits from the WebBrowser control this control is opened in a STA thread the browser navigates to a given address then fills in the web forms controls but when I try to use InvokeMember("click") nothing happens. I have tryed to use the following code to click the link

        void ClickLink(HtmlElement link)    
        {
                if (this.InvokeRequired)
                {
                        this.BeginInvoke((MethodInvoker)delegate()
             {
                                ClickLink(link);
                        });
                }
                else
                {
                        link.InvokeMember("click");
                }
        }

When this method is called from the following

    HtmlElementCollection links = this.Document.GetElementsByTagName("a");
foreach (HtmlElement link in links)
    {
        string href = link.GetAttribute("href").ToLower();
        if (link.InnerText != null)
        {
                text = link.InnerText.ToLower();
        }



        foreach (string fname in address)
        {
                if (href.Contains(fname)|| text.Contains(fname))
  {
                        ClickLink(link);
                        // link.InvokeMember("click");
                        Thread.Sleep(5000);
                        // Application.Run();
                        while(this.ReadyState!=WebBrowserReadyState.Complete)
     {
                                Application.DoEvents();
                        }
                }
        }

nothing happens but when I step through the code in the ClickLink method is just passing over the InvokeRequired if statement and going direct to the else statement.

how can I get the InvokeMember to work.