Я на самом деле делаю это, но это немного сложнее, чем вы думаете, и по возможности его следует избегать.
Вы не должны блокировать действия; если ожидается, что это будет длительное действие, ожидающее ввода извне (например, событие FileSystemWatcher), рабочий процесс должен простаивать и ждать, пока его разбудит извне.
Как я это сделал, я создал расширение рабочего процесса, в котором размещался FileSystemWatcher. Как только действие было готово к просмотру файла, оно создало закладку и передало ее расширению.
Затем расширение запустило FSW, удерживая закладку.
Когда произошло событие FSW, расширение возобновило закладку, передав объект, содержащий подробности о событии. Мероприятие сделало то, что было необходимо с событием, а затем перепланировало себя.
Обычно я бы этого не делал, но у меня были некоторые требования, которые заставляли меня использовать WF4 для достижения этой цели. Если бы мне не нужно было использовать WF4, я бы просто развернул FSW внутри службы и использовал события.
Если только вы не предполагаете, что вам придется проявлять большую гибкость в конфигурации, подробно описывая то, что вы делаете с событием FSW, и ожидаете, что это будет меняться относительно часто во время развертывания службы, я бы пропустил WF4.