I continuously find myself having to write timed windows services that poll outside queues or run timed processes. I consequently have a fairly robust template by which to
One means of having a delegate that takes an unknown set of parameters is to pass an array of objects. You can then use the array's length as the number of parameters, and since any type is convertable into an object, you can pass anything.