static void Main(string[] args) { List <FrameGenerator> list = new List <FrameGenerator>(); HashSet <FrameGenerator> set = new HashSet <FrameGenerator>(); Random r = new Random(); Int32 count = 100; //for (Int32 i = 0; i < 100000000; ++i) //{ // Int32 data = r.Next(2000); // list.Add(data); // set.Add(data); //} Int32 time = 1000; FrameGenerator init = new FrameGenerator(FPSMode.Limited30); Stopwatch watch = new Stopwatch(); init.Start(); watch.Start(); for (Int32 i = 0; i < count; ++i) { // Int32 data = r.Next(2000); FrameGenerator generator = new FrameGenerator(FPSMode.Unlimited); list.Add(generator); generator.FrameHappend += Generator_FrameHappend; generator.Start(); // set.Add(data); } //foreach (Int32 i in list) //{ //} //list.RemoveAll(t=>t>100); FrameGenerator g = new FrameGenerator(); watch.Stop(); Console.WriteLine(watch.ElapsedMilliseconds); System.Timers.Timer timer = new System.Timers.Timer(time); timer.Elapsed += (s, e) => { Interlocked.Increment(ref Stop); Console.WriteLine("Count :" + Count.ToString() + " FPS:" + (Count * 1.0 / (time / 1000) / count).ToString()); Interlocked.Exchange(ref Count, 0); //Console.WriteLine( // $"{Round((decimal)((_CurrentProcess.TotalProcessorTime.TotalMilliseconds - _cpuUsage) / _stopWatch.ElapsedMilliseconds) * (decimal)(100f / Environment.ProcessorCount))} % - {Environment.ProcessorCount} Cores"); }; timer.Start(); Console.Read(); watch.Restart(); for (Int32 i = 0; i < count; ++i) { // Int32 data = r.Next(2000); FrameGenerator generator = new FrameGenerator(); set.Add(generator); // set.Add(data); } //foreach (Int32 i in set) //{ //} //set.RemoveWhere(t=>t>100); watch.Stop(); Console.WriteLine(watch.ElapsedMilliseconds); }