Ⅱ. やり方
1. 必要なパッケージをNuGetからインストールする
Install-Package ConcurrentDataStructures
2. サンプルプログラムを書く
※簡単の為非同期らしい動きは省きます
using DataStructures; using System; namespace Test { class Program { class MyQueue : IComparable<MyQueue> { public int Id { get; set; } public int Priority { get; set; } public int CompareTo(MyQueue x) { // Priorityが大きい順に取得出来るようにする return Priority - x.Priority; } } static void Main(string[] args) { var queue = new ConcurrentPriorityQueue<MyQueue>(); queue.TryAdd(new MyQueue { Id = 1, Priority = 100 }); queue.TryAdd(new MyQueue { Id = 2, Priority = 999 }); queue.TryAdd(new MyQueue { Id = 3, Priority = 200 }); while (true) { if (queue.TryTake(out var x)) { Console.WriteLine($"Id: {x.Id}, Priority: {x.Priority}"); } else { break; } } } } }
実行結果
Id: 2, Priority: 999 Id: 3, Priority: 200 Id: 1, Priority: 100