Я пробовал несколько учебных пособий, чтобы решить мою проблему ... но это такой большой и простой -.-
Вот код:
private void btnMonitor_Click(object sender, EventArgs e)
{
lock (m_lock)
{
if (thread_isRunning)
{
thread_isAbortRequested = true;
}
else
{
thread_isAbortRequested = false;
thread_isRunning = true;
ThreadPool.QueueUserWorkItem(BackgroundMethod);
}
}
//StartMonitoring();
}
Да, я действительно следую этому методу: Как запустить поток, если нажата кнопка, и остановить его при повторном нажатии?
Вот почему мой код такой.
Прежде всего:
Моя цель программы lil - позволить пользователю ввести путь в текстовое поле, нажать кнопку монитора и BINGO, запустить поток и продолжить мониторинг указанной папки для определенных файлов (в данном случае txt), а также добавьте их в таблицу данных.
На самом деле он уже занесен в мою сетку данных ... проблема в том, что при нажатии кнопки монитора поток запускается только один раз :( и я хотел что-то вроде каждые 3 секунды новых файлов BAAZINGA !! (если они были добавлены в папка ofc)
Как вы, ребята, видите, я довольно нуб, и у меня проблемы со всеми этими потоками и вызовами, проблемы с перекрестными потоками и т. Д. ... вы знаете!
Я не прошу рабочий код, просто советы и подсказки, чтобы сделать его классным
РЕДАКТИРОВАТЬ 1:
На данный момент единственная строка с ошибкой: ThreadPool.QueueUserWorkItem (BackgroundMethod);
список ошибок говорит:
Ошибка 1 Наилучшее совпадение перегруженного метода для 'System.Threading.ThreadPool.QueueUserWorkItem (System.Threading.WaitCallback)' имеет недопустимые аргументы;
Ошибка 2 Аргумент 1: невозможно преобразовать из «группы методов» в «System.Threading.WaitCallback»;
РЕДАКТИРОВАТЬ 2:
Программа получила 3 основных класса (не void main LOL), которые:
Form.cs -> где я устанавливаю события кнопки, вызываю мои специальные методы
ViewerManager -> на самом деле, я не уверен насчет этого ... Я добавил конструктор и метод Execute, который вызывает GetFiles () из класса DirectoryManager
DirectoryManager -> это мой драгоценный класс, есть Execute (путь строки), он вызывает ReadFiles (путь) и GetFiles (путь) ..
GetFiles представляет собой список строк и возвращает _files (список строк), который заполняется функцией ReadFiles ().
РЕДАКТИРОВАТЬ 3:
eww, я получил обновление таблицы данных, но с использованием windows.forms.timer ..
Мехх, есть идеи без таймеров?
OBS: извините за мой ужасный английский и похожий на нуб LOL