Esempio n. 1
0
        /// <summary>
        /// Init the multithread run time resource
        /// </summary>
        internal void InitMutltiThreadResources()
        {
            _taskScheduler = new LimitedConcurrencyTaskScheduler(GetCmdletConcurrency(), CmdletCancellationToken);
            OutputStream   = new TaskOutputStream(CmdletCancellationToken)
            {
                OutputWriter      = WriteObject,
                ErrorWriter       = WriteExceptionError,
                ProgressWriter    = WriteProgress,
                VerboseWriter     = WriteVerbose,
                DebugWriter       = WriteDebugWithTimestamp,
                ConfirmWriter     = ShouldProcess,
                TaskStatusQueryer = _taskScheduler.IsTaskCompleted
            };
            _taskScheduler.OnError += TaskErrorHandler;

            const int summaryRecordId = 0;
            var       summary         = String.Format(Resources.TransmitActiveSummary, _taskScheduler.TotalTaskCount,
                                                      _taskScheduler.FinishedTaskCount, _taskScheduler.FailedTaskCount, _taskScheduler.ActiveTaskCount);
            var activity = string.Format(Resources.TransmitActivity, MyInvocation.MyCommand);

            summaryRecord = new ProgressRecord(summaryRecordId, activity, summary);
            CmdletCancellationToken.Register(() => OutputStream.CancelConfirmRequest());
        }
Esempio n. 2
0
 public SceneManager(int num_threads = 1)
 {
     TaskScheduler = new LimitedConcurrencyTaskScheduler(num_threads + 1);
     TaskScheduler.Factory.StartNew(Run, RunTokenSource.Token);
 }