C# ftpwebrequest in定时器错误
我试图在计时器中执行FTPWEBREQUEST,但在C# ftpwebrequest in定时器错误,c#,vb.net,C#,Vb.net,我试图在计时器中执行FTPWEBREQUEST,但在TextBox1.Text=reader.ReadToEnd上出现此错误 Cannot access a disposed object. Object name: 'System.Net.Sockets.NetworkStream'. 你能帮忙吗 谢谢 Public Class Form1 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As Syste
TextBox1.Text=reader.ReadToEnd上出现此错误
Cannot access a disposed object.
Object name: 'System.Net.Sockets.NetworkStream'.
你能帮忙吗
谢谢
Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
End Sub
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
Timer1.Stop()
Dim request As FtpWebRequest = CType(WebRequest.Create(""), FtpWebRequest)
request.Method = WebRequestMethods.Ftp.ListDirectoryDetails
request.Credentials = New NetworkCredential("", "")
Dim response As FtpWebResponse = CType(request.GetResponse(), FtpWebResponse)
Dim ResponseStream As Stream = response.GetResponseStream()
Dim reader As New StreamReader(ResponseStream)
'Console.Write(reader.ReadToEnd)
'MessageBox.Show("Directory List Complete, status {0}", response.StatusDescription)
'MessageBox.Show(reader.ReadToEnd)
'MessageBox.Show(reader.ReadToEnd)
TextBox1.Text = reader.ReadToEnd
TextBox1.Text = vbNewLine
TextBox1.Text = vbNewLine
ResponseStream.Close()
reader.Close()
response.Close()
reader.Close()
response.Close()
Timer1.Start()
End Sub
End Class
我不知道你的确切目标以及你为什么需要计时器
但我想为您的编码实践提供一些建议:
您不应两次关闭(处理)流。使用Using
语句可获得更干净、更安全的信息
可读代码。它还有助于尽早释放资源,即使抛出异常也是如此
Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
End Sub
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
Timer1.Stop()
Dim request As FtpWebRequest = CType(WebRequest.Create(""), FtpWebRequest)
request.Method = WebRequestMethods.Ftp.ListDirectoryDetails
request.Credentials = New NetworkCredential("", "")
Using response As FtpWebResponse = CType(request.GetResponse(), FtpWebResponse)
Using responseStream As Stream = response.GetResponseStream()
Using reader As New StreamReader(responseStream)
TextBox1.Text = reader.ReadToEnd
TextBox1.Text += vbNewLine
TextBox1.Text += vbNewLine
' Use the + for appending (set the textbox to multiline)
End Using
End Using
End Using
Timer1.Start()
End Sub
End Class
谢谢-太好了-我注意到一件事,如果我在forma应用程序运行时向目录中添加新文件,它不会显示新文件-你知道为什么吗?谢谢你指的是哪个文件?从您的FTP目录列表或一些本地?因此,如果在应用程序运行时,它轮询FTP位置并显示目录内容。如果我用filezilla将一个文件复制到文件夹中,我希望我的应用程序文本框在运行时会更新,但它不会更新。谢谢帮助