public void AddAsyncTask(AsyncData asyncData, bool isforceStart) { _lock.EnterWriteLock(); asyncData.GenerateNextTime(isforceStart); _tasks.Add(asyncData); _event.Set(); _lock.ExitWriteLock(); }
private AsyncData FindNextTask() { AsyncData ret = null; _lock.EnterReadLock(); if (_tasks.Count != 0) { var tmp = _tasks.FindAll(x => !x.IsStopped && !x.IsLast()); if (tmp.Count != 0) { var time = tmp.Min(x => x.Timeout); ret = _tasks.Find(x => x.Timeout == time && !x.IsStopped); } } _lock.ExitReadLock(); return(ret); }