I am developing a C# program, which performs various tasks in parallel threads. I created a Base task and let all tasks derived from this class execute. I just want to know if this a viable approach which won't cause unforeseen consequences if various tasks run in conjunction.public abstract class BaseTask{     private readonly Timer _taskTimer = new Timer();    // Derived classes to define thier own time Intervals    protected abstract double TimerInterval { get; set; }    public void Start()    {        // Set default Timer -- 10 seconds        TimerInterval = 10000;        _taskTimer.AutoReset = true;        _taskTimer.Interval = TimerInterval;        _taskTimer.Elapsed += ExecuteTask;        _taskTimer.Start();    }    public void Stop()    {        _taskTimer.Stop();    }    public abstract void ExecuteTask(object sender, ElapsedEventArgs e);}// Derived Task Class class DerivedTask : BaseTask {   protected override double TimerInterval    {        get { return 5000; }        set {  }    }    public override void ExecuteTask(object sender, ElapsedEventArgs e)    {        // Do My Derived task operations here    } } // Now In Main.. static void Main() {    DerivedTask dTask = new DerivedTask ();    _dTask .Start(); }
Timers to use various Task(s)
c#;multithreading;timer
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 += (_, __) => action();    }    public void Start() { _taskTimer.Start(); }    public void Stop() { _taskTimer.Stop(); }}Usage:void Main(){    var t1 = new TimerTask(() => 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.