-1
すべての構文は正しいですし、コードを実行するとエラーは表示されませんが、フォームのログインボタンをクリックすると、フリーズしてしまいます。 以下のコードがあります。私はそれを凍らせないように効率的にする方法を知らない。テキストファイルから読み込む配列を使用すると、フォームがフリーズするのはなぜですか?
Imports System.IO
Public Class Form3
Dim reader1 As System.IO.StreamReader
Dim classdata As Array
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
reader1 = My.Computer.FileSystem.OpenTextFileReader("C:\Users\ryanm_000\Documents\username and password.txt")
While reader1.EndOfStream = True
classdata = reader1.ReadLine.Split(",")
If TextBox1.Text = "admin" AndAlso TextBox2.Text = "iamtheboss" Then
MsgBox("Welcome Mr Khan", MsgBoxStyle.Information, "Admin")
Me.Hide()
My.Forms.Form7.Text = Now.ToString
My.Forms.Form7.Show()
ElseIf TextBox1.Text = classdata(0) AndAlso TextBox2.Text = classdata(1) Then
Me.Hide()
My.Forms.Form5.Text = Now.ToString
My.Forms.Form5.Show()
reader1.Close()
Else
MsgBox("Sorry, username or password is invalid, please try again", MsgBoxStyle.Information, "Error")
End If
End While
End Sub
End Class
[質問]を読んで[ツアー]をご覧ください。 Visual Studioには* debugger *という優れたツールが付属していますので、この種の問題を見つけて修正することができます。 'すべての構文は正しいし、エラーも出ません'というのは、コンパイルされていることを意味します。バグはありません。 – Plutonix
EndOfStream = Trueの間はループしています。それは不合理なようだ。ファイルが空の場合、常にストリームの終わりなので、永遠にループします。ファイルが空でない場合、それは偽になり、決してループに入りません(基本的に、私がこれについて考えている間に彼が追加したphaonの答え) – dwilliss
問題は確かに配列ではありません。コードをデバッグしてください!メソッドの最初のステートメントにブレークポイントを設定し、行ごとにブレークポイントを実行すると、それが動作しない理由がわかります!参照:[デバッガでのコードのナビゲート](https://msdn.microsoft.com/en-us/library/y740d9d3.aspx?f=255&MSPPError=-2147217396) –