protected virtual void ExecuteSynchronously() { mBehaviorExecutePattern = BehaviorExecutePattern.Synchronization; Work(); }
/// <summary> /// Starts the behavior with the specified synchronization pattern. /// </summary> /// <param name="synchronizationPattern">The synchronization pattern.</param> public virtual void Start(BehaviorExecutePattern synchronizationPattern) { if (mIsWorkFinished) return; switch (synchronizationPattern) { case BehaviorExecutePattern.Synchronization: ExecuteSynchronously(); break; case BehaviorExecutePattern.Asynchronization: ExecuteAsynchronously(); break; } }
protected virtual void ExecuteAsynchronously() { if (mAsynchronousWorkThread == null) { lock (mSyncRoot) { if (mAsynchronousWorkThread == null) { mAsynchronousWorkThread = new Thread(Work); } } } mBehaviorExecutePattern = BehaviorExecutePattern.Asynchronization; mAsynchronousWorkThread.Start(); }
public override void Initialize() { mDummyEventArgs = new EventArgs(); mPlannedWorkPattern = BehaviorExecutePattern.Synchronization; Status = BehaviorStatus.Closed; mDependentBehaviors = new List<Behavior>(); //initialize the event state to allow thread to continue mManualEvent = new ManualResetEvent(true); mBehaviorEntities = new Dictionary<Component, BehaviorEntityType>(); mShouldPause = false; mShouldAbort = false; mIsWorkFinished=false; mDisposed = false; ProcessRate = 0; mProgressChangedEventArgs = new ProgressChangedEventArgs(mProcessRate); }