Как создать отдельный поток с другого класса?

Возникла проблема при создании отдельного потока. Вызываю с основного метода:

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 шт):

Автор решения: Pavel Popov

Если я верно понял это WPF ? Не совсем понял, почему у вас отвалились события, как вы реализовали свое окно ? Пробовали ли вы событие Loaded ? Если вам нужно обратится к UI из другого потока, это можно обернуть в

 public void Start(){

   //Какой-то тяжелый код 

    Application.Current.Dispatcher.Invoke(()=>{
           //работа с UI
          });
   }

Ну и можно ваш костыль, заменить на другой костыль - запустить например таймер с однократным срабатыванием(есть потокобезопасные таймеры) Но опять же эток костыль не лучше вашего... я бы посоветовал почиать про Task + async await на этом можно реализовать более удобное и красиво решение

→ Ссылка