vb.netを使用してTcpClientの作成をしています。
データ送信ボタンを押すと、切断ボタンが押されるまでデータをループで送り続ける使用になっています。
Application.DoEvents()
If flg = true Then Exit Do
上記でDoLoopを抜けていたのですが、DoEventsの処理を使ってはいけないと言われました。
そのため、非同期処理 async/await を使用しようと思いましたが上手く実装できませんでした。
どのようにすれば私の思う事を実装できるか、DoEventsは本当に不必要なのか、
async/awaitで実現できるのか、教えて頂けませんでしょうか。
以下現在のソースです
Public Class Form1 Private m_tcp As System.Net.Sockets.TcpClient Private flg As Boolean Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click Dim IP As String Dim Port As Integer IP = TextBox1.Text Port = Integer.Parse(TextBox2.Text) m_tcp = New System.Net.Sockets.TcpClient(IP, Port) Console.WriteLine("サーバー({0}:{1})と接続しました({2}:{3})。", _ DirectCast(m_tcp.Client.RemoteEndPoint, System.Net.IPEndPoint).Address, _ DirectCast(m_tcp.Client.RemoteEndPoint, System.Net.IPEndPoint).Port, _ DirectCast(m_tcp.Client.LocalEndPoint, System.Net.IPEndPoint).Address, _ DirectCast(m_tcp.Client.LocalEndPoint, System.Net.IPEndPoint).Port) End Sub Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click If m_tcp Is Nothing Then Exit Sub End If Console.WriteLine("送信開始") Dim ns As System.Net.Sockets.NetworkStream = m_tcp.GetStream() ns.ReadTimeout = 10000 ns.WriteTimeout = 10000 Dim text As Long Dim bytedata() As Byte flg = False Do Dim sendBytes(49) As Byte ーーー配列の処理ーーー ns.Write(sendBytes, 0, sendBytes.Length) Dim i As Integer For i = 0 To 119 Console.Write(sendBytes(i) & ", ") Next i Dim textFile As System.IO.StreamWriter textFile = New System.IO.StreamWriter("C:\Users\G570\Desktop\Tcp\TcpClient\6月8日\log.txt", True, System.Text.Encoding.Default) For i = 0 To 119 textFile.Write(sendBytes(i) & ", ") Next i textFile.WriteLine() textFile.Close() Array.Clear(sendBytes, 0, sendBytes.Length) System.Threading.Thread.Sleep(5000) Application.DoEvents() If flg = True Then Exit Do Loop End Sub Private Sub Button3_Click(sender As System.Object, e As System.EventArgs) Handles Button3.Click flg = True m_tcp.Close() Console.WriteLine("切断しました。") End Sub
回答5件
あなたの回答
tips
プレビュー