Timers to use various Task(s)
I don't see any reason to use Base and Derived classes in your case. At least with the context you've provided.

public class TimerTask
{
    private readonly Timer _taskTimer;

    public TimerTask(Action action, int interval = 10000)
    {
        _taskTimer = new Timer { AutoReset = true, Interval = interval };
        _taskTimer.Elapsed += (_, __) =&gt; action();
    }

    public void Start() { _taskTimer.Start(); }

    public void Stop() { _taskTimer.Stop(); }
}


Usage:

void Main()
{
    var t1 = new TimerTask(() =&gt; Console.WriteLine("t1"), 100);
    t1.Start();
    Thread.Sleep(1000);
    t1.Stop();
}


System.Timers.Timer is thread-safe, but you have to make sure that your code is thread-safe.