private IImmutableSet <string> SearchFor(string search) { var containingSet = setsById.First(entry => entry.Value.ContainsWord(search)); //var root = conjugator.FindRoot(search); return(ImmutableHashSet.CreateRange(StringComparer, from setId in containingSet.Value.ReferencedSets let relatedAdjectives = (adjectiveLookup as AdjectiveLookup).SearchByAdverbId(setId) from word in relatedAdjectives from form in conjugator.GetLexicalForms(word) select form).Add(search)); }
public static async Task <int> GetHighestTrafficDevice(CaptureDeviceList devices, int timeoutMs) { System.Collections.Concurrent.ConcurrentDictionary <int, int> bag = new System.Collections.Concurrent.ConcurrentDictionary <int, int>(); var isCapturing = true; var tasks = new List <Task>(); for (var index = 0; index < devices.Count; ++index) { devices[index].Open(DeviceMode.Promiscuous, timeoutMs); bag[index] = 0; var currentIndex = index; tasks.Add(new Task(() => { while (isCapturing) { var rawCapture = devices[currentIndex].GetNextPacket(); if (rawCapture != null && bag.ContainsKey(currentIndex)) { ++bag[currentIndex]; } } })); } foreach (Task task in tasks) { task.Start(); } await Task.Run(() => { Thread.Sleep(timeoutMs); isCapturing = false; }); await Task.WhenAll(tasks); foreach (var device in devices) { device.Close(); } return(bag.First(item => item.Value == bag.Max(currentItem => currentItem.Value)).Key); }