I realized a WPF Control Library to use as an Addin in MS Office 2007.

The WPF-Class is instantiated by the host and creates a toolbar with some buttons in MS Office.
By clicking a button the WPF window should appear.
The problem is that I always receive the following error: "**The calling thread must be STA, because many UI components require this.**"
My main function is marked as [STAThread].

It seems that the button\_Click event runs in an other thread than the UI thread.

I tried to use a dispatcher, but that didn't work.

```
Dispatcher.CurrentDispatcher.Invoke(
               System.Windows.Threading.DispatcherPriority.Normal,
               new Action(
                 delegate()
                 {
    wpfform wf = new wpfform();
    wf.ShowDialog();
     ));

```

I think the module gets a wrong dispatcher, but I don't know exactly.
Next I tried to start the window in an separate STA thread and join the thread, but this didn't work either. As I removed the `[STAThread]` Attribute from the main function the window started, but i was unable to access office (because i'm in a separate thread).

```
Thread workerThread = new Thread(_ShowDialog);
workerThread.SetApartmentState(ApartmentState.STA);
workerThread.Start();
workerThread.Join();

```

Is it possible to determine the UI thread and create a dispatcher for this thread, or how can I come back to the UI thread?