/// <summary>
        /// Constructor LogFileWriter
        /// </summary>
        public LogFileWriter(
            FileParameterStruct fileParameter,
            Func <string>?getNewFileHeader     = null,
            Func <string>?getNewDayHeader      = null,
            int maxMessageQueueSize            = maxMessageQueueSizeDefault,
            int logFileWriterTimerInitialDelay = 10,
            int logFileWriterTimerInterval     = 10000)
        {
            this.getNewFileHeader    = getNewFileHeader;
            this.getNewDayHeader     = getNewDayHeader;
            this.maxMessageQueueSize = maxMessageQueueSize;
            fileSizeManager          = new FileSizeManager(fileParameter);

            initialiseLogFileWriterTimer(logFileWriterTimerInitialDelay, logFileWriterTimerInterval);
        }
        void initialiseNewParameter()
        {
            FileParameterStruct existingFileParameter = fileSizeManager.FileParameter;

            if (existingFileParameter.DirectoryPath == newFileParameter.DirectoryPath &&
                existingFileParameter.FileName == newFileParameter.FileName &&
                existingFileParameter.FileExtension == newFileParameter.FileExtension) //
            {
                //only max size or number of files has changed. Just change some FileSizeManager properties.
                fileSizeManager.ChangeProperties(newFileParameter.MaxFileByteCount, newFileParameter.MaxFileCount);
            }
            else
            {
                //file name or location has changed, a new FileSizeManager is needed.
                fileSizeManager = new FileSizeManager(newFileParameter);
            }
            isNewFileParameter = false;
            lastDate           = DateTime.Now.Date;
        }