The calling thread cannot access this object because a different thread owns it.WPF [duplicate]

Use Dispatcher.Invoke Method.

Executes the specified delegate synchronously on the thread the
Dispatcher is associated with.

Also

In WPF, only the thread that created a DispatcherObject may access
that object. For example, a background thread that is spun off from
the main UI thread cannot update the contents of a Button that was
created on the UI thread
. In order for the background thread to
access the Content property of the Button, the background thread must
delegate the work to the Dispatcher associated with the UI thread.
This is accomplished by using either Invoke or BeginInvoke. Invoke is
synchronous and BeginInvoke is asynchronous. The operation is added to
the event queue of the Dispatcher at the specified DispatcherPriority.

You are getting the error because your label is created on UI thread and you are trying to modify its content via another thread. This is where you would require Dispatcher.Invoke.

Check out this article
WPF Threads Build More Responsive Apps With The Dispatcher

Leave a Comment