• 主页
  • VBS
  • .NET技术
  • VBA
  • VB网络编程
  • VB多媒体
  • VB数据库
  • VB控件
  • VB COM/DCOM
  • VB基础类
  • VB API

为什么会报异常!

hqmmf 2005-03-21 06:02:13
1。在mdi主窗体中进行监听,在一个打开的子窗体中发送,为什么退出后会报异常!谢谢!
Imports System.Net
Imports System.Net.Sockets
Imports System.Threading
Public Class Form1
Inherits System.Windows.Forms.Form

Private th As New Thread(AddressOf Listen) '一个线程
Private tcpl As New TcpListener(5656) '从 TCP 网络客户端侦听连接。
Private listenerRun As Boolean = True
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
th.Start()
End Sub
Private Sub Listen()
Try
'服务器端,从 TCP 网络客户端侦听连接,5656是端口号
'Dim tcpl As New TcpListener(5656)
tcpl.Start() '开始侦听
'StatusBar1.Text = "正在监听..."
While listenerRun '一直进行监听
'接受挂起的连接要求
Dim s As Socket = tcpl.AcceptSocket()
'定义一个数组作为数据缓冲区
Dim stream(80) As Byte
'将数据从连接的sokets接受到接受缓冲区的特定位置
'stream是接受到的数据的存储位置
Dim i As Integer = s.Receive(stream)
'将接收的数据进行解码,使用UTF8编码格式。
Dim message As String = System.Text.Encoding.UTF8.GetString(stream)
'richTextBox1.AppendText(message)
MessageBox.Show(message)
End While
Catch ex As System.Security.SecurityException '检测到安全性错误引发的异常
MessageBox.Show("防火墙安全错误!", "错误", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)

Catch ex As Exception
MessageBox.Show(ex.Message, "kaishi")
'MessageBox.Show("error!")
'StatusBar1.Text = "已停止监听!"
End Try
End Sub

Private Sub MenuItem2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MenuItem2.Click
Dim newform As New Form2()
newform.MdiParent = Me
newform.show()
End Sub

Private Sub Form1_Closing(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles MyBase.Closing
Try
listenerRun = False
tcpl.Stop() '停止侦听
th.Abort() '终止线程

Catch ex As Exception
MessageBox.Show(ex.Message, "11")
End Try
End Sub
End Class
///////////////////
在form2中
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Send()
End Sub
Private Sub Send()
Try

Dim msg As String = "工单已完成!"
'初始化 TcpClient 类的新实例并连接到指定主机上的指定端口
Dim tcpc As TcpClient = New TcpClient("192.254.63.221", 5656)
'返回发送或接受数据的流
'NetworkStream 提供用于网络访问的基础数据流()
Dim tcpstream As NetworkStream = tcpc.GetStream()

Dim reqstreamw As StreamWriter = New StreamWriter(tcpstream)
reqstreamw.Write(msg)
reqstreamw.Flush() '清除当前编写器的所有缓冲区,并使所有缓冲数据写入基础流
tcpstream.Close()
tcpc.Close() '客户端连接关闭

Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
...全文
30 点赞 收藏 2
写回复
2 条回复
hqmmf 2005年03月22日
是不是在线程的abort后,线程并没有真正的被结束,仍然会产生异常啊?
那么该如何避免这个异常的出现呢?
回复 点赞
haoco 2005年03月21日
up
回复 点赞
发动态
发帖子
VB
创建于2007-09-28

1.1w+

社区成员

11.0w+

社区内容

VB技术相关讨论,主要为经典vb,即VB6.0
社区公告
暂无公告