У меня есть этот цикл, который открывает случайные файлы и последовательно читает из этих файлов. Поскольку эти файлы могут быть буквально в тысячах, мне нужен способ выйти из цикла for и do без зависания системы, как сейчас, когда нажата кнопка остановки поиска.Как изящно выйти из цикла в .net VB
В настоящее время лучшим методом, который я нашел для использования, является установка цикла x на последнее число при нажатии кнопки остановки поиска.
Я попытался выйти из цикла с выходом и выходом, но это не имело никакого значения, почему система зависает некоторое время, прежде чем система сможет остановить цикл. Я должен нажать несколько раз кнопку остановки поиска, прежде чем программа станет отзывчивой. Ниже часть коды, который делает петлю: -
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click stopsearch = False Dim x As Single Dim startvalue As Single Dim endvalue As Single startvalue = Val(TextBox1.Text) endvalue = Val(TextBox2.Text) If TextBox4.Text <> "" Then ListView1.Items.Clear() ProgressBar1.Minimum = startvalue ProgressBar1.Maximum = endvalue Button1.Text = "Searching . . . " For x = startvalue To endvalue ProgressBar1.Value = x Dim f As String If stopsearch = True Then x = endvalue exit for End If f = TextBox3.Text + "-" + Trim(Str(x)) + "." + company If File.Exists(D_Drive + "\STORE-16\" + f) Then 'MsgBox(f) FileClose(30) FileOpen(30, D_Drive + "\store-16\" + f, OpenMode.Input) Try Dim sr As String = "" Do While Not EOF(30) sr = LineInput(30) If InStr(UCase(sr), UCase(TextBox4.Text)) > 0 Then Dim i As ListViewItem = ListView1.Items.Add(Str(x)) i.SubItems.Add(sr) Application.DoEvents() End If Loop Finally FileClose(30) End Try End If Next x Button1.Text = "Re-start Search " End If End Sub Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click stopsearch = True End Sub
'они не имели никакого значения, почему система зависает какое-то время, прежде чем система сможет остановить цикл« quit », вызвав« DoEvents », не обновлять индикатор выполнения в цикле и некоторых других, но это не код обзор. Чтобы выйти из цикла, просто вызовите 'Exit For' ... Просто установка переменной не выходит из цикла, поэтому, потому что она все еще продолжается. – Codexer
В другом примечании 'vb6 <> vb.net' ... В вашем коде вы ссылаетесь на него много. Я бы рекомендовал вырезать его и использовать новые функции и методы .net. – Codexer
Zaggler для комментариев - я вставил Exit Для даже попытался попытаться не обновить индикатор выполнения. , , Я не могу помочь себе, но использовать код vb6 - если бы кто-то мог преобразовать мой код с новыми функциями и методами .net, чтобы я мог учиться. , Я не знаю, когда смотрю на этот код, где начать внедрение. , , –