anchor.diff:      static let unregisterTimer = new System.Threading.Timer( TimerCallback( ThreadPoolWait.ToUnregister ), null, 10, 10 )
       /// Register for a waithandle, with a cancellation token. 
       /// The caller needs to check for cancellation within the continuation funcito. 
  -    static member WaitForHandleWithCancellation (infoFunc: unit-> string) (handle:WaitHandle) (continuation:unit->unit) (unblockHandle:ManualResetEvent) (token:CancellationToken) =
  +    static member WaitForHandleWithCancellation (infoFunc: unit-> string) (handle:WaitHandle) (continuation:unit->unit) (unblockHandle:EventWaitHandle) (token:CancellationToken) =
           if token.IsCancellationRequested then 
               // Continuation should contains further check on cancellation
               continuation() 
  
positive.code:     static member private CallBack( state: Object ) (timeout:bool) = 
          if not timeout then
              try
                  let infoFunc,handle,continuation,unblockHandle,jobObject = state :?> ((unit->string)*WaitHandle*(unit->unit)*ManualResetEvent*Object)
                  continuation() 
                  if Utils.IsNotNull unblockHandle  then 
                      // If there is an unblock handle, set it. 
  
negative.code:     member val TaskList = ConcurrentDictionary<_,ConcurrentQueue<_>>() with get, set
      member val TaskStatus = ConcurrentDictionary<_,_>() with get, set
      member val HandleDoneExecution = new ManualResetEvent( true ) with get
      member val HandleWaitForMoreJob = new AutoResetEvent( false ) with get
      member val HandleBlockOnJob = null with get, set
      member val CompletedTasks =  ConcurrentDictionary<_,_>() with get, set
      member val TaskTracking = ConcurrentDictionary<_,int>() with get, set
  