Пример #1
0
 private void WrapCall<T>(Func<Task<T>> call, Action<T, Stream> serializer, int reqID) {
     try {
         Task<T> task = call();
         var tnext = task.ContinueOnMainThread(t => {
             if (t.IsFaulted) {
                 Console.Error.WriteLine(MakeStr(t.Exception));
                 Console.Error.Flush();
                 connector.SendResponseError(reqID, t.Exception.InnerMost());
             }
             else {
                 T res = t.Result;
                 connector.SendResponseSuccess(reqID, stream => serializer(res, stream));
             }
         });
     }
     catch (Exception exp) {
         Console.Error.WriteLine(MakeStr(exp));
         Console.Error.Flush();
         connector.SendResponseError(reqID, exp.InnerMost());
     }
 }