Пример #1
0
        private void ExecuteTask(IScriptTask task)
        {
            _queue.Add(task);
            task.WaitForCompletion();

            if (task.Exception is object)
            {
                ExceptionDispatchInfo.Capture(task.Exception).Throw();
            }
        }
Пример #2
0
 public void ExecuteTask(IScriptTask task)
 {
     if (Thread.CurrentThread.ManagedThreadId == this._executingThreadId)
     {
         task.Run();
     }
     else
     {
         this._taskQueue.Enqueue(task);
         ExecutingScript._waitEvent.Set();
         ExecutingScript._continueEvent.WaitOne();
     }
 }
Пример #3
0
        public void ExecuteTask(IScriptTask task)
        {
            if (Thread.CurrentThread.ManagedThreadId == _executingThreadId)
            {
                task.Run();
            }
            else
            {
                _taskQueue.Enqueue(task);

                SignalAndWait(ExecutingScript._waitEvent, ExecutingScript._continueEvent);
            }
        }
Пример #4
0
        /// <summary>
        /// Execute a script task in this script domain.
        /// </summary>
        /// <param name="task">The task to execute.</param>
        public void ExecuteTask(IScriptTask task)
        {
            if (Thread.CurrentThread.ManagedThreadId == executingThreadId)
            {
                // Request came from the main thread, so can just execute it right away
                task.Run();
            }
            else
            {
                // Request came from the script thread, so need to pass it to the domain thread and execute there
                taskQueue.Enqueue(task);

                SignalAndWait(executingScript.waitEvent, executingScript.continueEvent);
            }
        }
Пример #5
0
 public ScriptTaskBuilder(IBpmnModelInstance modelInstance, IScriptTask element) : base(modelInstance, element)
 {
 }