Я пишу небольшую программу для выполнения некоторых операций с базой данных и задаю небольшой вопрос о дизайне.Как проверить глобальные события внутри бесконечного цикла внутри класса?
Часть моей программы просматривает файл журнала изменений, и это включает в себя код, который завершается в классе. Таким образом, использование что-то вроде этого:
auto fileWatcher = new FileWatcher(fileName);
fileWatcher.onChange(delegate);
fileWatcher.start();
После того, как метод запуска называется петля вводится в классе и файл смотрел. Изменения обрабатываются через вызов зарегистрированного делегата. Цикл использует различные методы просмотра для разных платформ.
Что мне нужно сделать, это остановить текущие часы и изменить просмотренный файл.
Поскольку это в бесконечном цикле, я не могу проверить извне, то есть вне класса, если мне нужно выйти из цикла просто потому, что управление никогда не возвращается к вызывающей стороне метода start()
.
Я пропустил что-то простое здесь? Любые советы приветствуются. Я думал о потоковом и передаче сообщений, но это может быть излишним для чего-то столь же простого, как это?
Как я икру поток, используя функцию-член в D? –
'spawn (& (cast (shared) this) .run);' –
Неужели 'run' должен быть статическим? потому что я получаю сообщение об ошибке с помощью этого кода. то есть он не соответствует объявлению шаблона функции. У вас есть большой пример, пожалуйста? –