コード例 #1
0
        public void AddAsyncTask(AsyncData asyncData, bool isforceStart)
        {
            _lock.EnterWriteLock();

            asyncData.GenerateNextTime(isforceStart);
            _tasks.Add(asyncData);
            _event.Set();

            _lock.ExitWriteLock();
        }
コード例 #2
0
        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);
        }