Updating The UI From Another Task
In WPF, the “Dispatcher” is the way to call a function that belongs to a class in one thread from another thread.
As long as the class you are calling supports the
Dispatcher object (all UI classes such as
Window do), you can use the following code. Note that the function to execute is defined in the function call to
If you want the calling thread to wait until the dispatcher function has run to completion before continuing (i.e. synchronous execution), you can use the
Invoke() method rather than
Locking is the common way of making thread-safe code in C#. It is done with the keyword lock, which is a native keyword in C# (it doesn’t require any library or .dll to be included for it to work).
A lock can be taken out on any object, although it is common to make a separate object of type
object, just for locking.
Queues are a good way of passing information between two asynchronous threads. The .NET language supports queues with the
The actual objects that are queued can be defined as any standard class. To be thread-safe, reading and writing from the queue (enqueue and dequeue respectively), requires the use of a lock so you don’t happen to be half way through writing to it when you start to read from it.
This work is licensed under a Creative Commons Attribution 4.0 International License .