マルチスレッド アプリケーションでイベントを収集するために辞書を使用しています。イベントを追加するときは lock を使用し、検索するときは使用しません。約 1 時間ごとに、特定の時間より古いイベントのクリーンアップを実行します。非常にシンプルで機能します。
ConcurrentDictionary に移動してロックを解除したいのですが、「Concurrent」を追加して、Add を TryAdd に変更するだけでよいと考えました。しかし、その後、LINQ が ToDictionary のみを返すというエラーが発生しました。私は明らかに LINQ を使用できませんが、LINQ を保存するためにできることがあるかどうか知りたいと思っていました。さらに重要なことは、ConcurrentDictionry に移行する前に考慮すべきことが他にありますか?
public class messageResult
{
public Result result;
public DateTime receivedTime;
}
public Dictionary<Guid, messageResult> events = new Dictionary<Guid, messageResult>();
lock (events)
{
events = events.Where(p => p.Value.receivedTime >= t).ToDictionary(p => p.Key, p => p.Value);
}
ありがとう