Как лучше запустить метод в отдельном потоке? - C#
Формулировка задачи:
Добрый день! Прошу вашего опытного совета.
У меня есть статический метод, созданный в консольном приложении. При запуске вываливалась консоль и выдавала определённый инфо-текс. Этот метод я хочу использовать в приложении Windows Form.
При запуске его из Windows Form, естественно форма виснет, хотя свою функцию он выполняет.
Я придумал запустить его в параллельном потоке, чтобы метод делал своё дело. То что пишет консоль мне по сути не важно, и нужно чтобы во время этого пользователь мог общаться с формой.
Так как метод статический я передаю в него контрол на мою форму, чтобы он мог брать с текстбоксов данные.
Запускать и использовать метод я пытаюсь вот так :
Мой метод:
При объявлении - происходят две ошибки :
- new - Наиболее подходящий перегруженный метод для 'System.Threading.Thread.Thread(System.Threading.ThreadStart)' имеет несколько недопустимых аргументов (CS1502)
- StartModbusTcpSlave - Аргумент "1": преобразование типа из "группа методов" в "System.Threading.ThreadStart" невозможно (CS1503)
Thread tr = new Thread(StartModbusTcpSlave); tr.Start(); // tr.Abort(); - при закрытии формы, чтобы приложение не висело в процессах
public static void StartModbusTcpSlave(MainForm form) { // this code }
Thread tr = new Thread(StartModbusTcpSlave); tr.Start();
Суть вопроса
: 1. Как лучше организовать и как правильно (учитывая ошибки выше) работу этого метода в отдельном потоке? Т.е. либо убрать ошибки, либо другим способом. 2. Я понимаю, работать это должно, но состяпана моя программа невероятно коряво и через пень колоду и решить эту задачу можно и нужно правильно. Как? Укажите что и как сделать правильно. Спасибо!Решение задачи: «Как лучше запустить метод в отдельном потоке?»
textual
Листинг программы
Task.Factory.StartNew(() => StartModbusTcpSlave(this));
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д