/// <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()); }
public SceneManager(int num_threads = 1) { TaskScheduler = new LimitedConcurrencyTaskScheduler(num_threads + 1); TaskScheduler.Factory.StartNew(Run, RunTokenSource.Token); }