Попробуйте использовать очередь:
Очередь используется в большинстве ООП, таких как Java, .NET, когда вам нужно получить то, что вам нужно, чтобы следовать правилу FIFO (первым пришел - первым вышел).
Стек LIFO - последний на первом ...
Dim myQ As Queue(Of KeyValuePair(Of Integer, String)) = New Queue(Of KeyValuePair(Of Integer, String))
myQ.Enqueue(New KeyValuePair(Of Integer, String)(1, "one"))
myQ.Enqueue(New KeyValuePair(Of Integer, String)(2, "two"))
myQ.Enqueue(New KeyValuePair(Of Integer, String)(3, "three"))
'later on you can retrieve objects by
'myQ.Dequeue
Response.Write("<p>Queue</p>")
For Each kvp As KeyValuePair(Of Integer, String) In myQ
Response.Write(kvp.Key & " is " & kvp.Value & "<br>")
Next
Dim ht As Hashtable = New Hashtable()
ht.Add(1, "one")
ht.Add(2, "two")
ht.Add(3, "three")
Response.Write("<p>Hashtable</p>")
For Each kvp As DictionaryEntry In ht
Response.Write(kvp.Key & " is " & kvp.Value & "<br>")
Next