Как остановить и запустить работающий цикл числа в текстовом файле или базе данных в Visual Basic - PullRequest
0 голосов
/ 25 августа 2011

Мне нужно небольшое приложение, которое случайным образом перемешивает набор предварительно загруженных номеров. Перестановка будет видна на экране и будет продолжаться непрерывно (циклично), пока не будет нажата клавиша, и как только это произойдет, будет показан выигрышный номер. Я использую Visual Basics 2008 для разработки приложения, но моя проблема в том, что когда я запускаю приложение и нажимаю клавишу, оно будет перебирать мои цифры в текстовом файле, а также будет отображать событие, но если я нажму клавишу, чтобы остановить его, не будет остановись ... Нужна помощь, пожалуйста

Я работал над приложением, но моя проблема в том, как остановить цикл и возобновить его нажатием клавиши. ниже приведены коды приложений.

Dim Running As Boolean = False

Sub ReadAccounts()

    Dim arr As New ArrayList
    arr.Add("1366-665885-666-22650")
    arr.Add("1366-665885-666-11111")
    arr.Add("1366-665885-666-11111")
    arr.Add("1366-665885-666-22650")
    arr.Add("1366-665885-666-22650")
    arr.Add("1366-665885-666-11111")
    arr.Add("1366-665885-666-11111")
    arr.Add("1366-665885-666-22650")
    arr.Add("1366-665885-666-22650")
    arr.Add("1366-665885-666-11111")
    arr.Add("1366-665885-666-11111")
    arr.Add("1366-665885-666-22650")
    arr.Add("1366-665885-666-11111")
    arr.Add("1366-665885-666-22650")
    arr.Add("1366-665885-666-22650")
    arr.Add("1366-665885-666-11111")
    arr.Add("1366-665885-666-11111")
    arr.Add("1366-665885-666-22650")
    arr.Add("1366-665885-666-22650")

    Try
        Dim rnd As New Random

        For i As Integer = 0 To arr.Count - 1

            Dim Disarray As String = arr(i).ToString()
            System.Threading.Thread.Sleep(100) ' set sleep time
            lblAccounts.Text = Disarray

            lblAccounts.Update()
            Application.DoEvents()

        Next

        If Running Then
            Running = False
        End If

    Catch ex As Exception
        MessageBox.Show(ex.Message)
    End Try
    ' e.Handled = True
End Sub

Private Sub Form2_KeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles MyBase.KeyPress
    If System.Char.IsWhiteSpace(e.KeyChar) = True Then

        If Running Then
            Running = False
        Else
            Running = True
            ReadAccounts()
        End If

    End If

End Sub

1 Ответ

0 голосов
/ 25 августа 2011

Сначала я бы загружал числа из файла в массив или в список вместо постоянного чтения из файла внутри цикла.

Затем это зависит от типа проекта, который у вас есть.Если это консольное приложение , я бы проверил, доступно ли нажатие клавиши в каждом цикле:

If Console.KeyAvailable Then
    'terminate your loop
End If

Я бы также включил в цикл System.Threading.Thread.Sleep(<time in ms>), чтобы контролироватьчастота отображения чисел.В противном случае ваш компьютер перестанет отвечать на запросы.

Если это приложение WinForms , то вы можете использовать System.Windows.Forms.Timer.Вы можете разместить его в форме и настроить в окне свойств.Добавьте обработчик события для события Tick таймера (так же, как вы бы добавили обработчик события нажатия для кнопки), в который вы поместите код, отображающий следующее случайное число.Не понадобится петля вообще.Таким образом, ваше приложение всегда будет отзывчивым.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...