Я думаю, что ваша проблема может быть связана с тем, как Microsoft.NET обрабатывает элементы управления пользовательского интерфейса. По сути, любой метод для элемента управления должен вызываться из потока, который его создал (возможно, даже из основного потока пользовательского интерфейса). В противном случае вы получите кучу исключений, связанных с доступом. Я полагаю, что вам нужно будет использовать свойство InvokeRequired и метод Invoke для вызова элемента управления, что также означает, что вам придется определить функцию delgate, которая оборачивает каждый метод, который вы хотите вызвать. Используя в качестве примера свойство WebBroweser.Url, вы можете написать что-то вроде этого:
public delegate void SetWebAddressDelegate ( WebBrowser browser, Uri newUrl);
public void SetWebAddress ( WebBrowser browser, Uri newUrl )
{
if (browser.InvokeRequired)
browser.Invoke(new SetWebAddressDelegate(SetWebAddress), browser, newUrl);
else
browser.Url = newUrl;
}