private void InvokeSendJobProgressModelWithSuccessEventHandler(JobDetailEntity jobDetail)
		{
			if (SendJobDetailWithSuccessEventHandler != null)
			{
				SendJobDetailWithSuccessEventHandler(this, jobDetail);
			}
		}
		protected virtual void TrySendJobProgress()
		{
			if (_jobDetails != null && _jobDetails.Count > 0)
			{
				foreach (var sendJobProgressModel in _jobDetails)
				{
					try
					{
						var model = sendJobProgressModel;

						var task = Task.Factory.StartNew(async () =>
						{
							JobDetailEntity jobDetail = new JobDetailEntity
							{
								JobId = model.Value.JobId,
								Detail = model.Value.Detail,
								Created = model.Value.Created
							};

							var httpResponseMessage =
								await _httpSender.PostAsync(_uriBuilder.Uri,
														   jobDetail);

							if (httpResponseMessage.IsSuccessStatusCode)
							{
								JobDetailEntity removedValue;

								var removed =
									_jobDetails.TryRemove(model.Key, out removedValue);

								if (removed)
								{
									InvokeSendJobProgressModelWithSuccessEventHandler(removedValue);
								}
							}
						});

						task.Wait();
					}
					catch (Exception)
					{
						var msg =
							string.Format("Send job progresses to manager failed for job ( jobId ) : ( {0} )",
							              sendJobProgressModel.Value.JobId);

						Logger.ErrorWithLineNumber(msg);
					}
				}
			}
		}
		public void SendProgress(Guid jobid, string progressMessage)
		{
			var progressModel = new JobDetailEntity
			{
				JobId = jobid,
				Detail = progressMessage,
				Created = DateTime.UtcNow
			};

			_jobDetails.TryAdd(Guid.NewGuid(), progressModel);
		}