Esempio n. 1
0
 internal PrioritizedQueue(string resetEventName, BackgroundServiceTask <T> serviceTask, ushort priority)
 {
     _itemWasReceivedSignal = new TaskEventWaitHandle(false, resetEventName, priority);
     SafeWaitHandle         = _itemWasReceivedSignal.SafeWaitHandle;
     serviceTask.AddResetEvent(_itemWasReceivedSignal);
     _itemWasReceivedSignal.Queue = this;
 }
Esempio n. 2
0
        private async Task Produce(CancellationToken token, ServiceTaskWaitEventSource eventSource,
                                   TaskEventWaitHandle waitHandle)
        {
            Status = TaskStatus.Running;
            var item = eventSource == ServiceTaskWaitEventSource.Prioritized
                ? ((PrioritizedQueue <T>)waitHandle.Queue).Dequeue()
                : GetNextItem();

            if (item != null)
            {
                await _propagationBlock.SendAsync(item, token);
            }
        }
Esempio n. 3
0
 internal void AddResetEvent(TaskEventWaitHandle resetEvent)
 {
     _itemAvailableSignalList.Add(_itemAvailableSignalList.Count, resetEvent);
 }