- DateTime start = DateTime.Now;
- while (cancelToken.Token.IsCancellationRequested ==false)
- {
- try
- {
- lock (lckObj)
- {
- limitedQueue.Enqueue(new object());
- }
- }
- catch
- {
- }
- finally
- {
- if (DateTime.Now - start <TimeSpan.FromMilliseconds(sleep))
- {
- int newSleep = sleep - (int)(DateTime.Now - start).TotalMilliseconds;
- if (newSleep> 1)
- Thread.Sleep(newSleep - 1); // 做一下时间上的补偿
- }
- start = DateTime.Now;
- }
- }
- }
来源: https://www.cnblogs.com/vveiliang/p/9049393.html