Я ломаю голову, пытаясь заставить работать многопоточность так, как хочу в WPF
У меня есть объект (с одноэлементным именем), называемый Manager, который выполняет много операций обработки и поиска. Я хочу, чтобы он запускался в отдельном потоке от пользовательского интерфейса. Пользовательский интерфейс будет вызывать методы в Диспетчере для обработки и запуска событий, на которые пользовательский интерфейс должен реагировать
Я конвертирую это приложение из форм Windows, где я не думаю, что это было проблемой, поскольку событие textbox автоматически запускалось в другом потоке. Не так в WPF, где, кажется, все остается в потоке пользовательского интерфейса.
Как заставить объект "жить" в другом потоке, а затем как я вызываю его методы. Я попытался создать его в новом потоке, используя это в конструкторе Window
Thread managerThread = new Thread(new ThreadStart(ManagerStartingPoint));
managerThread.SetApartmentState(ApartmentState.STA);
managerThread.IsBackground = true;
managerThread.Start();
и
private void ManagerStartingPoint()
{
ManagerSingleton.Manager = new Manager();
MediatorSingleton.Mediator = new Mediator();
}
В текстовом поле с текстовым событием я вызываю Manager.SetItemText (e.Value), который логически должен вызываться в новом потоке, верно? Тем не менее, когда я печатаю, и событие запускает UI "заикается", и это влияет на ввод текста в текстовом поле. Нужно ли вызывать метод асинхронно или как?