Почему мой таймер возвращается в ноль, когда я унаследовал его? - PullRequest
1 голос
/ 03 октября 2011

У меня есть интерфейс:

 public interface IProcess
    {
        void Step_One();
        void Step_Two();
        Timer ProcessTimer{get; set;}
    }

базовый класс ..

 public class ProcessBase
    {
        protected Timer processTimer;
        public Timer ProcessTimer{get{ return processTimer;}set{processTimer=value;}}



        //sets up all the common objects
        public ProcessBase() 
        {


        }

        //This constructor will call the default constructor ^
        protected ProcessBase(long intervalArg) : this()
        {
            processTimer = new Timer(intervalArg);
            processTimer.Enabled = true;

        }

    }

бетонный класс

public class ReportedContentProcess : ProcessBase, IProcess
{

    public ReportedContentProcess(): base(5000)
    {

    }

    public void Step_One()
    {
    }

    public void Step_Two()
    {
    }
}

но когда я пытаюсь достать его на заводе ...

public static class ProcessFactory
    {

        public static List<IProcess> GetProcessors()
        {

            ReportedContentProcess.ReportedContentProcess reportedContentProcess = new ReportedContentProcess.ReportedContentProcess();

            List<IProcess> retProcesses = new List<IProcess>();
            retProcesses.Add(reportedContentProcess);
            return retProcesses;

        }   
    }

, а затем прикрепить обработчик к таймеру ...

processorsForService = ProcessFactory.GetProcessors();


                foreach(IProcess p in processorsForService)
                {
                    p.ProcessTimer.Elapsed += new ElapsedEventHandler(IProcess_Timer_Elapsed);
                }

Я получаю ошибку во время выполнения о том, что p.ProcessTimer имеет значение null. Почему это? Я унаследовал и создал в базовом классе не могу понять, почему его ноль. Я даже включил его в интерфейс ...

1 Ответ

1 голос
/ 03 октября 2011

Я вижу, что вы инициализируете Timer только во втором конструкторе.Что, если вызывается один по умолчанию (т.е. конструктор без параметров)?

...