static void Main(string[] args) { List<XmlTestData> tests = new List<XmlTestData>() { new XmlTestData(){ ClassName = "CalcServer.Toolboxes.MathToolbox", ClassVersion = "1.0.0.0", FunctionName = "MinMax", DataToProcess = GenerateRandomNumbersList(5, 100) }, new XmlTestData(){ ClassName = "CalcServer.Toolboxes.MathToolbox", ClassVersion = "1.0.0.0", FunctionName = "MinMaxIdx", DataToProcess = GenerateRandomNumbersList(5, 100) }, new XmlTestData(){ ClassName = "CalcServer.Toolboxes.StatisticsToolbox", ClassVersion = "1.0.0.0", FunctionName = "MeanStdDev", DataToProcess = GenerateRandomNumbersList(5, 100) }, new XmlTestData(){ ClassName = "CalcServer.Toolboxes.StatisticsToolbox", ClassVersion = "1.0.0.0", FunctionName = "WordsCount", DataToProcess = "a test string"} }; for (int i = 0; i < tests.Count; i++) { string taskDataStr = tests[i].ToString(); Console.WriteLine(taskDataStr); new Thread(() => { string taskDataName = string.Format("TaskData-{0}", i); Console.WriteLine(Environment.NewLine + taskDataName); TaskExecution te = new TaskExecution("http://localhost:9001/ProcessingService/", TimeSpan.FromSeconds(1)); te.OnTaskExecutionCompleted += new TaskExecutionCompletedHandler(te_OnTaskExecutionCompleted); te.OnTaskExecutionProgress += new TaskExecutionProgressHandler(te_OnTaskExecutionProgress); te.SetTaskData(taskDataName, taskDataStr); te.Start(); } ) { IsBackground = true }.Start(); mre.WaitOne(); Thread.Sleep(2000); Console.WriteLine(Environment.NewLine + "==========" + Environment.NewLine); mre.Reset(); } Console.WriteLine("Premere <Invio> per terminare l'applicazione..."); Console.ReadLine(); }
/// <summary> /// Invia una richiesta di elaborazione al servizio remoto e attende che venga completata. /// </summary> /// <remarks> /// Il lavoro viene eseguito su un nuovo thread. /// </remarks> private void ExecuteProcess() { TaskResult = string.Empty; ReportText = string.Empty; string uriProcessingService = ProcessingServicesList[SelectedProcessingServiceIndex]; string currentTaskName = "Task-" + (m_TasksCounter++).ToString(); if (!IsValidUri(uriProcessingService)) { UpdateReportText("Errore: indirizzo non valido per il servizio di elaborazione ({0}).", uriProcessingService); return; } IsBusy = true; new Thread(() => { TaskExecution te = new TaskExecution(uriProcessingService, TimeSpan.FromSeconds(2)); te.OnTaskExecutionProgress += new TaskExecutionProgressHandler(TaskExecution_Progress); te.OnTaskExecutionCompleted += new TaskExecutionCompletedHandler(TaskExecution_Completed); te.SetTaskData(currentTaskName, TaskData); te.Start(); } ) { Name = "ProcessingThread", IsBackground = true }.Start(); }