How to access control from another thread? C#/WPF [duplicate] - c#

This question already has answers here:
How to deal with cross-thread access exceptions?
(3 answers)
The calling thread cannot access this object because a different thread owns it
(15 answers)
Is it possible to initialize WPF UserControls in different threads?
(3 answers)
Closed 12 months ago.
How to change label in UserControl in UserControl from another thread?
Here is my code:
this.Dispatcher.Invoke(DispatcherPriority.Input,
new DelegateMethod(() => {
App.mainWindow.FirstUserControl.SecondUserControl.txtLbl.Content = "Hello!";
}));
Error:
System.InvalidOperationException: "The thread calling this cannot access the specified object because the object is owned by another thread."

Related

Does C# await continuation in main thread always run in same thread? [duplicate]

This question already has answers here:
async/await. Where is continuation of awaitable part of method performed?
(3 answers)
How do yield and await implement flow of control in .NET?
(5 answers)
Brief explanation of Async/Await in .Net 4.5
(3 answers)
How does the async/await return callchain work?
(2 answers)
Closed 2 years ago.
Suppose I have async function with the following code.
var reply = await httpClient.GetAsync(somePath);
ProcessReply(reply);
The async function with this code is called in main thread of WPF application. When I execute it ProcessReply always runs asynchronously from dispatcher in main thread, for example if I block main thread continuation is not reached. What controls which thread runs the code after await? Is it guaranteed or possible to make it guaranteed that part after await runs in main thread?

What is the scope of an unassigned object within a function? And when will the object gets disposed/garbage collected? [duplicate]

This question already has answers here:
Understanding garbage collection in .NET
(2 answers)
When is an object eligible for garbage collection? [duplicate]
(4 answers)
Closed 3 years ago.
I would like to know when the object initialized inside a method gets disposed.
My assumption is when the scope of the function ends.
public void foo() {
new Object1().SomeMethod();
}

How to access a form component with a thread? [duplicate]

This question already has answers here:
How do I update the GUI from another thread?
(47 answers)
Closed 6 years ago.
Simple question, I had an application in console mode. Every thing would write in the console using Console.WriteLine. However, now I have a form and a listbox. I know easily how to do it, however, what is the proper way to do it?
You can access the UI from another thread using delegate, simple and neat:
this.Invoke((MethodInvoker)delegate
{
textBox1.Value = "your text";
});

Accessing a UI thread from a non-UI thread in mvvm wpf [duplicate]

This question already has answers here:
Is it wrong to use the Dispatcher within my ViewModel?
(3 answers)
Closed 6 years ago.
There is a background thread in the viewmodel. It is trying to set a usercontrol property there which is being binded to the view. In simpler terms, accessing a UI thread from a non UI thread. What are the ways to establish this?
Thanks in advance.
in WPF:
Application.Current.Dispatcher.BeginInvoke(
DispatcherPriority.Background, () => { /* UI WORK HERE */ });

Cross-thread Winforms control editing [duplicate]

This question already has answers here:
Cross-thread operation not valid: Control accessed from a thread other than the thread it was created on
(22 answers)
Closed 9 years ago.
how can I edit the text in a windows form element if the code that is editing the text 'belongs' to a seperate thread from the one that contains the windows form? I get the exception:
Cross-thread operation not valid: Control 'textBox1' accessed from a thread other than the thread it was created on.
Thank you.
You will need to use Control.Invoke method like this:
textbox1.Invoke((MethodInvoker)(() =>
{
textbox1.Text="some text";
}));
Check this article too: Threading in UIs

Categories