Пример #1
0
        private static void te_OnTaskExecutionCompleted(object sender, TaskExecutionCompletedEventArgs e)
        {
            string result = string.Empty;
            string report = string.Empty;

            if (e.Cancelled)
            {
                report = string.Format("Annullato (task id = {0}).", e.Id);
            }
            else if (e.Error != null)
            {
                report = string.Format("Errore (task id = {0}).", e.Id) + e.Error.Message;
            }
            else
            {
                TaskResults tr = e.Result;
                report = string.Format("Completato (task id = {0}) in {1} con {2} errori.",
                    e.Id, tr.ElapsedTime, tr.EncounteredErrors.Length);

                result = string.Format("Risultati (task id = {0}).", e.Id) + Environment.NewLine + tr.Contents;
            }

            Console.WriteLine(report);
            Console.WriteLine("result: " + result);

            mre.Set();
        }
        /// <summary>
        /// Genera un nuovo evento per notificare il completamento della richiesta di elaborazione del task.
        /// </summary>
        /// <param name="cancelled">un valore che indica se il task è stato annullato</param>
        /// <param name="error">l'eventuale errore verificatosi durante la comunicazione col servizio</param>
        /// <param name="result">gli eventuali risultati scaricati dal server di elaborazione</param>
        /// <remarks>
        /// Se non si è verificato alcun errore durante la comunicazione col servizio, il patametro corrispondente
        /// va impostato a null. In modo analogo, se i risultati dell'elaborazione di un task non sono disponibili
        /// a causa di un errore o perché l'operazione è stata annullata, il parametro corrispondente dovrà essere
        /// impostato a null.
        /// </remarks>
        private void RaiseTaskExecutionCompleted(bool cancelled, Exception error, TaskResults result)
        {
            TaskExecutionCompletedHandler handler = OnTaskExecutionCompleted;

            if (handler != null)
            {
                TaskExecutionCompletedEventArgs args =
                    new TaskExecutionCompletedEventArgs(cancelled, error, result, m_TaskRequestId);
                OnTaskExecutionCompleted(this, args);
            }
        }
        /// <summary>
        /// Questo metodo viene invocato nel momento in cui viene completata la richiesta di elaborazione.
        /// </summary>
        /// <param name="sender">l'oggetto che ha invocato questo metodo</param>
        /// <param name="args">le informazioni aggiuntive sull'evento</param>
        private void TaskExecution_Completed(object sender, TaskExecutionCompletedEventArgs args)
        {
            string result = string.Empty;
            StringBuilder report = new StringBuilder();

            if (args.Cancelled)
            {
                report.Append("Richiesta di elaborazione annullata.");
                if (!string.IsNullOrWhiteSpace(args.Id))
                    report.AppendFormat(" Task Id = {0}.", args.Id);
            }
            else if (args.Error != null)
            {
                report.Append("Errore durante la richiesta.");
                if (!string.IsNullOrWhiteSpace(args.Id))
                    report.AppendFormat(" Task Id = {0}.", args.Id);

                if (args.Error is FaultException<ServiceFault>)
                {
                    FaultException<ServiceFault> fault = args.Error as FaultException<ServiceFault>;
                    report.AppendFormat(" Identificativo errore: {0}. ", fault.Detail.Id);
                    report.Append(TaskExecutionStateDescriptions.GetStateDescription(fault.Detail.Code));
                }
                else
                {
                    report.Append(' ');
                    report.Append(args.Error.Message);
                }
            }
            else
            {
                TaskResults tr = args.Result;
                result = tr.Contents;
                report.AppendLine("Richiesta di elaborazione completata con successo.");
                report.AppendLine("Tempo di elaborazione sul server: " + tr.ElapsedTime + ".");

                if (tr.EncounteredErrors != null && tr.EncounteredErrors.Length > 0)
                {
                    report.AppendLine("Errori di elaborazione: " + tr.EncounteredErrors.Length + ".");
                    foreach (var pe in tr.EncounteredErrors)
                    {
                        report.AppendLine(string.Format("[Id = {0}, Codice = {1}, {2}]", pe.Id, pe.Code, pe.Details));
                    }
                }
            }

            m_Updater.Update(() =>
            {
                TaskResult = result;
                UpdateReportText(report.ToString());

                IsBusy = false;
            }
            );
        }
 /// <summary>
 /// Genera un nuovo evento per notificare il completamento della richiesta di elaborazione del task.
 /// </summary>
 /// <param name="cancelled">un valore che indica se il task è stato annullato</param>
 /// <param name="error">l'eventuale errore verificatosi durante la comunicazione col servizio</param>
 /// <param name="result">gli eventuali risultati scaricati dal server di elaborazione</param>
 /// <remarks>
 /// Se non si è verificato alcun errore durante la comunicazione col servizio, il patametro corrispondente
 /// va impostato a null. In modo analogo, se i risultati dell'elaborazione di un task non sono disponibili
 /// a causa di un errore o perché l'operazione è stata annullata, il parametro corrispondente dovrà essere
 /// impostato a null.
 /// </remarks>
 private void RaiseTaskExecutionCompleted(bool cancelled, Exception error, TaskResults result)
 {
     TaskExecutionCompletedHandler handler = OnTaskExecutionCompleted;
     if (handler != null)
     {
         TaskExecutionCompletedEventArgs args =
             new TaskExecutionCompletedEventArgs(cancelled, error, result, m_TaskRequestId);
         OnTaskExecutionCompleted(this, args);
     }
 }