Ejemplo n.º 1
0
        private void RunTaskInProcess(TaskPlugin plugin, string taskToken)
        {
            plugin.Load();
            RaiseFirstUpdatingProgress(plugin, taskToken);

            TaskPlugin matchingTaskClone = null;

            using (MemoryStream pluginStream = new MemoryStream())
            {
                BinaryFormatter serializer = new BinaryFormatter();
                serializer.Serialize(pluginStream, plugin);
                pluginStream.Seek(0, SeekOrigin.Begin);
                matchingTaskClone = serializer.Deserialize(pluginStream) as TaskPlugin;
            }

            matchingTaskClone.UpdatingProgress += new EventHandler <UpdatingTaskProgressEventArgs>(Task_UpdatingProgress);
            inProcessTaskInformations.Add(new InProcessTaskInfo(matchingTaskClone, taskToken, TaskCommand.Resume));
            Task.Factory.StartNew(() =>
            {
                matchingTaskClone.Run();
            });
        }
 protected virtual void RunTaskCore(TaskPlugin plugin)
 {
     executingTask = plugin;
     executingTask.UpdatingProgress += new EventHandler <UpdatingTaskProgressEventArgs>(task_UpdatingProgress);
     Task.Factory.StartNew(() =>
     {
         taskThread = Thread.CurrentThread;
         try
         {
             executingTask.Run();
         }
         catch (Exception ex)
         {
             TraceException(ex);
         }
         finally
         {
             TraceMessage("Task Exiting.");
             AppDomain.CurrentDomain.AssemblyResolve -= new ResolveEventHandler(CurrentDomain_AssemblyResolve);
             Environment.Exit(0);
         }
     });
 }