/// <summary>
        ///     Creates status of thread in busy state.
        ///     It also takes information to store about ongoing computation.
        /// </summary>
        /// <param name="problemType">The name of the type as given by TaskSolver.</param>
        /// <param name="problemInstanceId">The ID of the problem assigned when client connected.</param>
        /// <param name="partialProblemId">The ID of the task within given problem instance.</param>
        public ComputationalThreadStatus(string problemType, ulong?problemInstanceId, ulong?partialProblemId)
        {
            _state           = ThreadStatus.ThreadState.Busy;
            _lastStateChange = DateTime.UtcNow;

            _problemType       = problemType;
            _problemInstanceId = problemInstanceId;
            _partialProblemId  = partialProblemId;
        }
        /// <summary>
        ///     Creates status of thread in busy state.
        ///     It also takes information to store about ongoing computation.
        /// </summary>
        /// <param name="problemType">The name of the type as given by TaskSolver.</param>
        /// <param name="problemInstanceId">The ID of the problem assigned when client connected.</param>
        /// <param name="partialProblemId">The ID of the task within given problem instance.</param>
        public ComputationalThreadStatus(string problemType, ulong? problemInstanceId, ulong? partialProblemId)
        {
            _state = ThreadStatus.ThreadState.Busy;
            _lastStateChange = DateTime.UtcNow;

            _problemType = problemType;
            _problemInstanceId = problemInstanceId;
            _partialProblemId = partialProblemId;
        }
        /// <summary>
        ///     Creates status of thread in idle state.
        /// </summary>
        public ComputationalThreadStatus()
        {
            _state           = ThreadStatus.ThreadState.Idle;
            _lastStateChange = DateTime.UtcNow;

            _problemType       = null;
            _problemInstanceId = null;
            _partialProblemId  = null;
        }
        /// <summary>
        ///     Creates status of thread in idle state.
        /// </summary>
        public ComputationalThreadStatus()
        {
            _state = ThreadStatus.ThreadState.Idle;
            _lastStateChange = DateTime.UtcNow;

            _problemType = null;
            _problemInstanceId = null;
            _partialProblemId = null;
        }