【发布时间】:2014-03-20 00:53:19
【问题描述】:
我遇到了一个小问题(刚回到 VB),很抱歉我的无知/缺乏理解。
我的第一个项目是重写一个 IRC Channel Quote/Seen Bot 并让它显示加密货币统计数据。无论如何回到问题。
我已经设法让连接正常工作,但是当我尝试从“GetStream.Read”查看数据时,我的 Gui 冻结了,我可以理解为什么会发生这种情况,因为它处于 500 毫秒计时器,但不知道如何防止或克服它。它只是等待更多数据进来。
我希望有人能提出一些想法,或者至少为我指明正确的方向
到目前为止我的代码
Imports System.Net.Sockets
Imports System.Text
Public Class Form1
Dim vClient As New TcpClient()
Dim vIRCNick = "TESTIRCBOT"
Dim vIRCChannel = "#TESTIRCCHAN"
Dim bytesRead As Integer
Dim buffer(1024) As Byte
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
vClient.Connect("irc.freenode.net", 6667)
IRCSend("USER " & vIRCNick & " 0 0 :TESTIRCBOT" & vbCrLf)
IRCSend("NICK " & vIRCNick & vbCrLf)
IRCSend("JOIN " & vIRCChannel & vbCrLf)
Timer1.Enabled = True
End Sub
Private Sub IRCSend(vMsg)
Dim bytes() As Byte = System.Text.ASCIIEncoding.ASCII.GetBytes(vMsg)
vClient.GetStream.Write(bytes, 0, bytes.Length)
End Sub
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
IRCSend("PRIVMSG " & vIRCChannel & " :" & TextBox3.Text & vbCrLf)
TextBox3.Text = ""
End Sub
Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
bytesRead = vClient.GetStream.Read(buffer, 0, buffer.Length)
If bytesRead > 0 Then
RichTextBox1.Text = RichTextBox1.Text & (System.Text.ASCIIEncoding.ASCII.GetString(buffer, 0, bytesRead))
End If
End Sub
End Class
【问题讨论】:
-
我已经编辑了你的标题。请参阅“Should questions include “tags” in their titles?”,其中的共识是“不,他们不应该”。