Whileは単にタイマーとして使用しているんですね。
それなら
Private Sub timeWaiteTime(ByVal waiteTime As DateInterval)
Dim startTime As DateTime = Now
While (Now.Subtract(startTime).TotalMilliseconds < waiteTime)
System.Threading.Thread.Sleep(1)
Application.DoEvents()
End While
End Sub
と言う関数を作っておいて
timeWaiteTime(5000)
と呼びだした方がいいかも知れません。
実際のところFormとClassの違いはないのです。
従ってFormにしようかClassにしようかと言う問いは意味がありません。
.NET上でのFormはデザイナーがインスタンスやイベントハンドラーを自動で作成してくれます。
従ってプログラムの容易さや作業スピードのことを考えると、Formを上手に使いましょう
と言うことになります。
SerialPort専用のフォームを作ってFomSerialPortとしたとします。
そしてその中にSerialPort1を置いたとしますよね、そうすると
FomSerialPortはクラスですからForm1の中でインスタンスを作る必要が
有ります。
Public Class Form1
Dim FormSerialPort1 As New FormSerialPort
'ポートをオープンする
Private Sub Button1_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Button1.Click
FormSerialPort1.SerialPort1.Open()
End Sub
End Class
こんな具合になるわけです。
もちろんデリゲートなんかもFomSerialPortクラスの中に書きます。
「FormSerialPort1.」はフォームのメンバーに対するアクセス子ではなく
Classのメンバーに対するアクセス子なのです。
SerialPortの受信はセカンドスレッドで行われますから、その処理は
SerialPortのインスタンスのあるクラスのインスタンスすなわち
FormSerialPort1で行われる方法が判り易いと思います。