Как лучше запустить метод в отдельном потоке? - 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));