| | |
| | | /// <summary> |
| | | /// https://learn.microsoft.com/zh-cn/dotnet/api/system.threading.tasks.taskscheduler?view=netframework-4.7.2 |
| | | /// </summary> |
| | | public class LimitedConcurrencyLevelTaskScheduler : TaskScheduler |
| | | public class LimitedConcurrencyLevelTaskSchedulerMsn : TaskScheduler |
| | | { |
| | | |
| | | public static LimitedConcurrencyLevelTaskScheduler Instance { get; private set; } |
| | | public static LimitedConcurrencyLevelTaskSchedulerMsn Instance { get; private set; } |
| | | public static TaskFactory Factory { get; private set; } |
| | | |
| | | static LimitedConcurrencyLevelTaskScheduler() |
| | | static LimitedConcurrencyLevelTaskSchedulerMsn() |
| | | { |
| | | Instance = new LimitedConcurrencyLevelTaskScheduler(Environment.ProcessorCount * 10); |
| | | Instance = new LimitedConcurrencyLevelTaskSchedulerMsn(Environment.ProcessorCount * 10); |
| | | Factory = new TaskFactory(Instance); |
| | | } |
| | | |
| | |
| | | private int _delegatesQueuedOrRunning = 0; |
| | | |
| | | // Creates a new instance with the specified degree of parallelism. |
| | | public LimitedConcurrencyLevelTaskScheduler(int maxDegreeOfParallelism) |
| | | public LimitedConcurrencyLevelTaskSchedulerMsn(int maxDegreeOfParallelism) |
| | | { |
| | | if (maxDegreeOfParallelism < 1) throw new ArgumentOutOfRangeException("maxDegreeOfParallelism"); |
| | | _maxDegreeOfParallelism = maxDegreeOfParallelism; |