タイトル : 【解決】: QueueCollectionsの改良 投稿日 : 2008/10/18(Sat) 15:02 投稿者 : ダンボ
> こだわるなら、Dequeue/Enqueueを繰り返してQueueをひとまわし循環させる > うちにその項目を取り除くってことでも何とかなると思っています。 これでいいですかね?キューの最大個数=キャッシュ数は20〜100位と想定して いるので負荷もそれほどかからないかと。 Public Class RQueue Inherits System.Collections.Generic.Queue(Of String) Public Sub Renqueue(ByVal Key As String) If MyBase.Contains(Key) Then Dim LoopCount As Integer = MyBase.Count For i As Integer = 1 To LoopCount Dim Item As String = MyBase.Dequeue If Not Item = Key Then MyBase.Enqueue(Item) End If Next i End If MyBase.Enqueue(Key) End Sub End Class このクラスだけでキューを管理するのでキュー内に同じKeyは無いという前提です。 LoopCountを別出しにしたのは、キューの長さが変わりうるから(必ず1減る)。 [後日追記]この改良クラス利用で望みのキャッシュ機構はうまく動いているみたいです。 着想が現実化できてとても嬉しいです。こういう喜びがプログラミング熱をさまさないで いる一因と思います。 Purge処理を忘れていたためキャッシュ上に残ったデータがディスクに反映されずに 終わったことは内緒。 |