socket监听出现死循环?

CanDy_O 2009-07-24 05:38:33

Public Class client_thread
Public Sub startup()
While True
Dim databuf(1024) As Byte
Dim x As Integer = c_socket.Receive(databuf, 0, c_socket.Available, SocketFlags.None)
Dim str1 As String = Encoding.Unicode.GetString(databuf, 0, x)
If str1 = "LoginYES" Then
form2.Show()
End If
End While
c_socket.Shutdown(SocketShutdown.Both)
c_socket.Close()
End Sub
End Class

接收到LoginYES后显示另一个窗体,这样是不是在接受下一个字符串之前就一直循环显示这个窗体?
错误貌似就是这样,运行时,form2出来后就卡死了。
这。。。怎么办啊?
...全文
245 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
ineedchrist 2009-07-26
  • 打赏
  • 举报
回复
你的代码质量太差,百度里搜TCP侦听,有个我写的类,用异步处理这个东西
CanDy_O 2009-07-25
  • 打赏
  • 举报
回复
解决了!
在这个线程启动前加一句
thread.ApartmentState = System.Threading.ApartmentState.STA
就ok了
jieon 2009-07-25
  • 打赏
  • 举报
回复
委托。
CanDy_O 2009-07-25
  • 打赏
  • 举报
回复
貌似问题变了,我把 form2.Show() 改成form2.showdialog()或者application.run(form2)就可以了,但是之后又会出现错误,原因是在一个线程中操作不是这个线程创建的控件,导致不安全

有没有办法让一个线程安全操作其他线程创建的控件呢?
yanlongwuhui 2009-07-25
  • 打赏
  • 举报
回复
循环体中没有设置退出条件
CanDy_O 2009-07-25
  • 打赏
  • 举报
回复
怎么没人啊

16,554

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧