Exemple #1
0
 private void RegisterMarshaller(TaskMarshaller marshaller)
 {
     Task.ContinueWith(
         t => {
         if (t.IsFaulted)
         {
             marshaller.SetException(t.Exception.InnerExceptions.ToArray());
         }
         else if (t.IsCanceled)
         {
             marshaller.SetCanceled();
         }
         else if (t.IsCompleted)
         {
             if (ResultType != null)
             {
                 marshaller.SetResult(AdapterTools.Marshal(((dynamic)t).Result));
             }
             else
             {
                 marshaller.SetResult(null);
             }
         }
     }
         );
 }
Exemple #2
0
        public static Task CreateTask(TaskAdapter adapter)
        {
            Type           resType = adapter.ResultType;
            TaskMarshaller marshal;

            if (resType != null)
            {
                marshal = (TaskMarshaller)Activator.CreateInstance(TaskMarshaller.Type.MakeGenericType(resType));
            }
            else
            {
                marshal = new TaskMarshaller <NoResult>();
            }
            adapter.RegisterMarshaller(marshal);
            return(marshal.Task);
        }