C# ftpwebrequest in定时器错误

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

我试图在计时器中执行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 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将一个文件复制到文件夹中,我希望我的应用程序文本框在运行时会更新,但它不会更新。谢谢帮助