Ejemplo n.º 1
0
 public static Task <TResult> WrapNativeAsyncInvoke <TResult>(
     Func <NativeCommon.IFabricAsyncOperationCallback, NativeCommon.IFabricAsyncOperationContext> beginFunc,
     Func <NativeCommon.IFabricAsyncOperationContext, TResult> endFunc,
     InteropExceptionTracePolicy tracePolicy,
     CancellationToken cancellationToken,
     string functionTag)
 {
     return(AsyncCallOutAdapter2 <TResult> .WrapNativeAsyncInvoke(functionTag, beginFunc, endFunc, tracePolicy, cancellationToken));
 }
Ejemplo n.º 2
0
 public static Task <TResult> WrapNativeAsyncInvokeInMTA <TResult>(
     Func <NativeCommon.IFabricAsyncOperationCallback, NativeCommon.IFabricAsyncOperationContext> beginFunc,
     Func <NativeCommon.IFabricAsyncOperationContext, TResult> endFunc,
     InteropExceptionTracePolicy tracePolicy,
     CancellationToken cancellationToken,
     string functionTag)
 {
     return(Utility.RunInMTA(() => WrapNativeAsyncInvoke(beginFunc, endFunc, tracePolicy, cancellationToken, functionTag)));
 }
Ejemplo n.º 3
0
        public static Task <TResult> WrapNativeAsyncInvoke(
            string functionTag,
            Func <NativeCommon.IFabricAsyncOperationCallback, NativeCommon.IFabricAsyncOperationContext> beginFunc,
            Func <NativeCommon.IFabricAsyncOperationContext, TResult> endFunc,
            InteropExceptionTracePolicy tracePolicy,
            CancellationToken cancellationToken)
        {
            var adapter = new AsyncCallOutAdapter2 <TResult>(functionTag, beginFunc, endFunc, tracePolicy);

            return(adapter.Start(cancellationToken));
        }
Ejemplo n.º 4
0
        private AsyncCallOutAdapter2(
            string functionTag,
            Func <NativeCommon.IFabricAsyncOperationCallback, NativeCommon.IFabricAsyncOperationContext> beginFunc,
            Func <NativeCommon.IFabricAsyncOperationContext, TResult> endFunc,
            InteropExceptionTracePolicy tracePolicy)
        {
            this.traceId = string.Format(CultureInfo.InvariantCulture, "AsyncCalloutAdapter-{0}", this.GetHashCode());

            this.functionTag   = functionTag;
            this.beginFunc     = beginFunc;
            this.endFunc       = endFunc;
            this.tracePolicy   = tracePolicy;
            this.nativeContext = new SharedNativeObject <NativeCommon.IFabricAsyncOperationContext>(this.functionTag);
            this.tcs           = new TaskCompletionSource <TResult>();
            this.isCompleted   = false;
        }
Ejemplo n.º 5
0
 public static Task WrapNativeAsyncInvoke(
     Func <NativeCommon.IFabricAsyncOperationCallback, NativeCommon.IFabricAsyncOperationContext> beginFunc,
     Action <NativeCommon.IFabricAsyncOperationContext> endFunc,
     InteropExceptionTracePolicy tracePolicy,
     CancellationToken cancellationToken,
     string functionTag)
 {
     return(Utility.WrapNativeAsyncInvoke <object>(
                beginFunc,
                (context) =>
     {
         endFunc(context);
         return null;
     },
                tracePolicy,
                cancellationToken,
                functionTag));
 }