для выбора времени попробуйте quartz.net .для синхронизации действий используйте, например.события, ручки ожидания , Monitor.Wait()
и Monitor.Pulse()
...
, в противном случае вы можете обрабатывать набор действий, например,
var methods = new List<Func>
{
FooMethod1,
FooMethod2
}
foreach (var method in methods)
{
method.Invoke();
}
, но это имеет смысл только, если у вас нет метода-модератора (последовательная обработка) или ваши методы не должны знать друг о друге.