I have method which create background thread to make some action. In this background thread I create object. But this object while creating in runtime give me an exception :
The calling thread must be STA, because many UI components require this.
I know that I must use Dispatcher to make reflect something to UI. But in this case I just create an object and dont iteract with UI. This is my code:
public void SomeMethod()
{
BackgroundWorker worker = new BackgroundWorker();
worker.DoWork += new DoWorkEventHandler(Background_Method);
worker.RunWorkerAsync();
}
void Background_Method(object sender, DoWorkEventArgs e)
{
TreeView tv = new TreeView();
}
How can I create objects in background thread?
I use WPF application
TreeViewis a UI control. You can only create and manipulate UI controls on a UI thread, so what you’re trying to do is not possible.What you want to do is do all of the time-consuming work on the background thread, and then “call back” to the UI thread to manipulate the UI. This is actually quite easy:
I may have got the syntax wrong for
BeginInvoke(it’s off the top of my head), but there you go anyway…