One executable with cmd-line params or just many satellite executables?
I design an application back-end. For now, it is a .NET process (a Console Application) which hosts various communication frameworks such as Agatha and NServiceBus.

I need to periodically update my datastore with values (coming from the application while it's running).

I found three possible ways:  

1. Accept command line arguments, so I can call my console app with -update.  
2. On start up a background thread will periodically invoke the update method.  
3. Create an updater.exe app which will do the updates, but I will have code duplication since in some way it will need to query the data from the source in order to save it to the datastore.

Which one is better?
One executable with cmd-line params or just many satellite executables?
===

I design an application back-end. For now, it is a .NET process (a Console Application) which hosts various communication frameworks such as Agatha and NServiceBus.

I need to periodically update my datastore with values (coming from the application while it's running).

I found three possible ways:  

1. Accept command line arguments, so I can call my console app with -update.  
2. On start up a background thread will periodically invoke the update method.  
3. Create an updater.exe app which will do the updates, but I will have code duplication since in some way it will need to query the data from the source in order to save it to the datastore.

Which one is better?