protected TaskRunnerBase(int id, ILogger logger) : base(logger)
        {
            if (id < 1)
            {
                throw new ArgumentOutOfRangeException(nameof(id), id, "Must be greater than zero.");
            }
            Id = id;

            StateSubject    = new ObservableValue <TaskRunnerState>();
            ProgressSubject = new ObservableValue <object?>();

            StateUpdated    = StateSubject.AsReadOnly();
            ProgressUpdated = ProgressSubject.AsReadOnly();
        }