internal static void Start(STask stask, ITaskUpdateCallback callback)
        {
            try
            {
                //// Step 1.a
                //var rtasks = CompositionUtil.ContainerInstance.GetExports<IRunnableTask>();
                //// Step 1.b
                //var rtask = from t in rtasks
                //            where t.Value.GetType().FullName == stask.STaskTypeName
                //            select t.Value;

                IRunnableTask rtask = null;
                switch (stask.STaskTypeName)
                {
                case "NumberOfEvenCTask":
                    rtask = new NumberOfEvenCTask();
                    break;
                }

                if (rtask != null)
                {
                    // Step 2
                    var cs = new CancellationTokenSource();
                    var ct = cs.Token;
                    _cancellationSources.TryAdd(stask.Id, cs);
                    // Step 3
                    Task <object>
                    .Run(rtask.Run(ct, stask.STaskParameters), ct)
                    .ContinueWith(tes => UpdateStatus(tes, stask, callback));
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
Beispiel #2
0
 public STaskInfo(ITaskUpdateCallback callback)
 {
     CallbackChannel = callback;
 }