O único "problema" ao utilizar varias threads é criar uma comunicação entre elas, você vai precisar de um mecanismo de sincronização entre as mesmas. Existem muitas maneiras de sincroniza-las. Mas o principio básico é o mesmo: cada uma deve "espera" a sua vez quando vão mexer na mesma variável por exemplo.
Em geral você faz tal sincronização desta maneira:
- Cria uma função que vai ser o ponto de entrada para a nova thread.
- Define onde são os "pontos críticos", ou seja, onde que cada thread deve esperar sua vez.
- Inicia a nova thread.
No seu caso você poderia fazer da seguinte forma:
- Na função que vai ser o ponto de entrada da nova thread você cria um loop que testa a pasta a cada 10 segundos.
- Se não houve modificações não faz nada.
- Se houve ele avisa a outra thread que houve uma modificação na pasta. (Por exemplo alterando alguma variável de controle para true ou algo do tipo).
- Na thread principal você cria outro loop que checa se a variavel é true ou false.
O ponto crítico neste caso é quando qualquer uma das thread alteram o valor da variável "compartilhada" e está é a parte que deve ser sincronizada.
A biblioteca que você vai utilizar depende muito da sua aplicação e como ela foi feita (managed/unmanaged e etc) se precisar de um exemplo de código poste aqui.