Привет. Как обратится к экземпляру класса который был создан в другом потоке? В WinForms достаточно вызвать Invoke, чтобы изменить компонент из другого потока. Мне нужно тоже самое, только для моего класса. Какие способы есть? Спасибо.
Вот пример:
class People() {
public void Say(string message) {}
}
class Form {
public Form() {
Task.Factory.StartNew(() => { // или через new Thread().Start
// :отдельный поток
People bob = new People();
bob.Say("Hello");
}
}
void OnButtonClick() {
// :поток формы
// Как вызвать bob.Say? чтобы была соблюдена потокобезопасность и в Task и в коде ниже
bob.Say("Bye");
}
}
// В дополение
// Пример с Dispatcher на формах, который я имел ввиду
class People() {
public People(Action action) {
action(); // потокобезопасный вызов
}
}
class Form {
Action action;
void SafeThreadCall() {
if (this.InvokeRequired) {
this.Invoke(action);
return;
}
this.Text = "New window caption!";
}
}