i'm programing a blackjack game, it works fine except the sub for preventing a vard from reapearing. if i run it vb says stackoverflow, and that there might me an infinite loop. here is the cood of the control does anyone see if it is an infinite loop or not?

Code:
Public Class card

  Private getal As Random = New Random

  Private card As String
  Private Valuecard As Integer
  Private cardgetal As Integer
  Protected cards_used As ArrayList = New ArrayList
  Private card_array() As String = {"h1", "k1", "r1", "s1", _
                                    "h2", "k2", "r2", "s2", _
                                    "h3", "k3", "r3", "s3", _
                                    "h4", "k4", "r4", "s4", _
                                    "h5", "k5", "r5", "s5", _
                                    "h6", "k6", "r6", "s6", _
                                    "h7", "k7", "r7", "s7", _
                                    "h8", "k8", "r8", "s8", _
                                    "h9", "k9", "r9", "s9", _
                                    "h10", "k10", "r10", "s10", _
                                    "hv", "kv", "rv", "sv", _
                                    "hq", "kq", "rq", "sq", _
                                    "hh", "kh", "rh", "sh"}

  Protected Function genereerKaart() As String

    cardgetal = getal.Next(0, 51)
    card = card_array(cardgetal)
    controle_card(card)
    Return card

  End Function
  Private Sub controle_card(ByVal card As String)
    Dim i = 0

    If cards_used.Count = 0 Then
      cards_used.Add(card)
    Else

      Do Until i = (cards_used.Count)
        If card IsNot cards_used(i) Then
          i = i + 1
        Else
          genereerKaart()
          Stop
        End If

      Loop

      cards_used.Add(card)
    End If
  End Sub
end class