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)); }
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))); }
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)); }
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; }
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)); }