title: Dispatcher to Thread relationships in WPF
body: <p>It is not entirely clear to me how many Dispatchers there are in an application and how they are related to, or referenced from Threads.</p>
  
  <p>As I understand it, a WPF application has 2 threads (one for input, the other for UI) and 1 dispatcher (associated to the UI-Thread). What if I create another thread - let's call it "worker thread" - when I call <code>Dispatcher.CurrentDispatcher</code> on the worker thread, which dispatcher will i get?</p>
  
  <p>Another case: 
  Assume a console application with 2 threads - the main thread, and an input-thread. On the main thread, I first create the input-thread and then i call <code>Application.Run()</code></p>
  
  <pre><code>Thread thread = new Thread(new ThreadStart(UserInputThreadFunction));
  thread.Start();
  Application.Run();
  </code></pre>
  
  <p>There will be one dispatcher, right? On the input-thread, does Dispatcher.CurrentDispatcher return the dispatcher of the main thread? Or what is the proper way of getting an instance to the main thread's dispatcher?</p>
  
  <p>Could it be, that there are more than one dispatcher in a WPF application? Is there any case, it would make sense to create another dispatcher?</p>