private void btnScheduler_Click(object sender, EventArgs e) { TaskHelper.UITask.Run(() => { Log("开始"); LimitedTaskScheduler scheduler = new LimitedTaskScheduler(100); List <Task> taskList = new List <Task>(); for (int i = 0; i < 10; i++) { Task task = scheduler.Run(() => { //Thread.Sleep(100); this.TryBeginInvoke2(() => { Log("LimitedTaskScheduler测试"); }); }); taskList.Add(task); } Task.WaitAll(taskList.ToArray()); scheduler.Dispose(); }); }
public LibraryScanner( ILibraryApiAdapter apiAdapter, ITrackRepository trackRepository, ICacheInfoRepository cacheInfoRepository) { _apiAdapter = apiAdapter; _trackRepository = trackRepository; _cacheInfoRepository = cacheInfoRepository; _timer = new IntervalTimer { Interval = 60 * 1000 }; _timer.Elapsed += (sender, args) => Update(); _scheduler = new LimitedTaskScheduler(1); _cts = new CancellationTokenSource(); }
public SocketServer( ProtocolHandler handler, ITinyMessengerHub hub, Authenticator auth, PersistenceManager settings) { _handler = handler; _hub = hub ?? throw new ArgumentNullException(nameof(hub)); _auth = auth; _settings = settings; _availableWorkerSockets = new ConcurrentDictionary <string, Socket>(); TaskScheduler scheduler = new LimitedTaskScheduler(2); _factory = new TaskFactory(scheduler); _hub.Subscribe <RestartSocketEvent>(eEvent => RestartSocket()); _hub.Subscribe <ForceClientDisconnect>(eEvent => DisconnectSocket(eEvent.ConnectionId)); _hub.Subscribe <BroadcastEventAvailable>(eEvent => Broadcast(eEvent.BroadcastEvent)); _hub.Subscribe <PluginResponseAvailableEvent>(eEvent => Send(eEvent.Message, eEvent.ConnectionId)); }
/// <summary> /// 创建一个可限制并发任务数的任务工厂 /// </summary> /// <param name="maxTaskCount">最大并发任务数</param> /// <exception cref="ArgumentOutOfRangeException"></exception> /// <returns></returns> public static TaskFactory NewFactory(int maxTaskCount) { var scheduler = new LimitedTaskScheduler(maxTaskCount); return(new TaskFactory(scheduler)); }
/// <summary> /// 创建一个可限制并发任务数的任务工厂 /// </summary> /// <param name="maxTaskCount">最大并发任务数</param> /// <exception cref="ArgumentOutOfRangeException"></exception> /// <returns></returns> public static TaskFactory NewFactory(int maxTaskCount) { var scheduler = new LimitedTaskScheduler(maxTaskCount); return new TaskFactory(scheduler); }
private static TaskFactory GetTaskFactory(this TwitterAccount account) { return(_accountTaskFactories.GetOrAdd(account.Id, _ => LimitedTaskScheduler.GetTaskFactory(1))); }