Exemple #1
0
            private Task RegisterCompletion(PipelineCallbackType callbackType)
            {
                CompletionEntry entry = new(callbackType);

                lock (_entries)
                {
                    _entries.Add(entry);
                }
                return(entry.CompletionTask);
            }
Exemple #2
0
            private void NotifyCompletions(PipelineCallbackType callbackType)
            {
                List <CompletionEntry> matchingEntries;

                lock (_entries)
                {
                    matchingEntries = new(_entries.Count);
                    for (int i = 0; i < _entries.Count; i++)
                    {
                        CompletionEntry entry = _entries[i];
                        if (_entries[i].CallbackType == callbackType)
                        {
                            _entries.RemoveAt(i);
                            matchingEntries.Add(entry);
                            i--;
                        }
                    }
                }

                foreach (CompletionEntry entry in matchingEntries)
                {
                    entry.Complete();
                }
            }
Exemple #3
0
 public CompletionEntry(PipelineCallbackType callbackType)
 {
     CallbackType = callbackType;
 }