private void CompleteAsyncBlock(object state) { AsyncWorkState asyncWorkState = (AsyncWorkState)state; RunTimer(asyncWorkState.Duration); UserTrace.Trace(asyncWorkState.ListenerExtension, asyncWorkState.InstanceID, AsyncOperationBlockExited); Complete(false); }
protected override IAsyncResult BeginExecute(AsyncCodeActivityContext context, AsyncCallback callback, object state) { TestTraceListenerExtension listenerExtension = context.GetExtension <TestTraceListenerExtension>(); UserTrace.Trace(listenerExtension, context.WorkflowInstanceId, AsyncOperationBlockEntered); AsyncWorkState asyncWorkState = new AsyncWorkState() { InstanceID = context.WorkflowInstanceId, Duration = this.Duration.Get(context), ListenerExtension = listenerExtension }; return(new AsyncOperationBlockActivityAsyncResult(asyncWorkState, callback, state)); }
public AsyncOperationBlockActivityAsyncResult(AsyncWorkState asyncWorkState, AsyncCallback callback, object state) : base(callback, state) { ThreadPool.QueueUserWorkItem(new WaitCallback(CompleteAsyncBlock), asyncWorkState); }