Как создать отдельный поток с другого класса?
Возникла проблема при создании отдельного потока. Вызываю с основного метода:
namespace Program
{
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
Patch.UI.Window = this;
Patch.Starter();
}
...
Patch.starter:
namespace Program
{
class Patch
{
public static MainWindow Window = null;
public static void Starter()
{
Patch startPatch = new Patch();
System.Threading.Thread t = new System.Threading.Thread(startPatch.Start);
t.Start();
}
...
Не знаю правильно ли делаю, но в итоге нужно, чтобы метод Patch.Start() вызвался в отдельном потоке, при открытии приложения.
Сейчас выдается ошибка:
Как это исправить?
Ответы (1 шт):
Если я верно понял это WPF ? Не совсем понял, почему у вас отвалились события, как вы реализовали свое окно ? Пробовали ли вы событие Loaded ? Если вам нужно обратится к UI из другого потока, это можно обернуть в
public void Start(){
//Какой-то тяжелый код
Application.Current.Dispatcher.Invoke(()=>{
//работа с UI
});
}
Ну и можно ваш костыль, заменить на другой костыль - запустить например таймер с однократным срабатыванием(есть потокобезопасные таймеры) Но опять же эток костыль не лучше вашего... я бы посоветовал почиать про Task + async await на этом можно реализовать более удобное и красиво решение
