That's right, this is unlikely to work. The WebBrowser control was intended to be used by a single STA thread. It will not display well in the MTA in the web service and will most likely require a serious hacker.
What are you trying to do? If you can describe your problem, we can offer an alternative solution.
change
Well, maybe it's possible, although of course it's hacked. Here's a theoretical implementation:
:
public Bitmap GiveMeScreenshot()
{
var waiter = new ManualResetEvent();
Bitmap screenshot = null;
var staThread = new Thread(() =>
{
var browser = new WebBrowser();
browser.DocumentCompleted += (sender, e) =>
{
screenshot = TakeScreenshotOfLoadedWebpage(browser);
waiter.Set();
}
browser.Navigate("http://www.google.com");
};
staThread.SetApartmentState(ApartmentState.STA);
staThread.Start();
var timeout = TimeSpan.FromSeconds(30);
waiter.WaitOne(timeout);
return screenshot;
};
private Bitmap TakeScreenshotOfLoadedWebpage(WebBrowser browser)
{
return browser.TakeScreenshot();
}
, : , System.Windows.Forms.WebBrowser , , . . . !