private void OnNewErrorReport(ServerErrorReport errorReport)
		{
			if (NewErrorReport != null)
			{
				NewErrorReport(this, new NewErrorReportEventArgs<ServerErrorReport>(errorReport));
			}
		}
		public void CreateServerErrorReport(ErrorReportBase clientErrorReport)
		{
			ProcessException.Handle("ServerErrorReportingEngine.CreateServerErrorReport() :" + clientErrorReport.ToString());
      ServerErrorReport serverErrorReport = new ServerErrorReport();
			serverErrorReport.ClientErrorReport = clientErrorReport;
			OnNewErrorReport(serverErrorReport);

			ThreadPool.QueueUserWorkItem(delegate(object state) { UploableErrorReportingEngine.Instance.CreateProcessingJob((ServerErrorReport)state); }, serverErrorReport);

		}
		public void CreateProcessingJob(ServerErrorReport errorReport)
		{
			try
			{
				realInstance.CreateProcessingJob(errorReport);
			}
			catch (Exception e)
			{
				Debug.WriteLine(e);
			}
		}
		public void CreateProcessingJob(ServerErrorReport errorReport)
		{
			
		}
		public void CreateProcessingJob(ServerErrorReport errorReport)
		{
			ProcessException.Handle("CreateProcessingJob() -error report: " + errorReport);
			ReportProcessingJob processingJob =new ReportProcessingJob(tools, errorReport);
			processingJob.StartProcessing();

			Uploder uploader = new Uploder(PackageUploadManager.Instance);
			uploader.TryDoUploads();
		}