文件同步Visual Studio 2015错误

问题描述 投票:-1回答:1

我回到你身边,因为我的源代码仍有问题,我会提醒你,我正在尝试从我复制的以下源代码进行FTP同步 视频:https://www.youtube.com/watch?v=E5qSxrbrf9I

错误:

BC31143'Private Sub File_Downloaded(sender As Object,e AsyncCompletedEventArgs)'方法没有与委托'Delegate Sub DownloadProgressChangedEventHandler(sender As Object,e As DownloadProgressChangedEventArgs)兼容的签名。错误BC30311无法将'FtpWebResponse'类型的值转换为'FtpWebRequest'。错误BC30456'GetResponseStream'不是'FtpWebRequest'的成员。

FTPManager.vb(类)

Public Class FTPManager
    Private Shared ConfigFile As String =
        Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory) & "\config.txt"

    Public Shared Folder As String = "Client_Pokemonia"
    Public Shared ServerRootPatch As String
    Public Shared User As String
    Public Shared PW As String

    Public Shared Sub loadConfig()
        If IO.File.Exists(ConfigFile) Then
            Dim lines = IO.File.ReadAllLines(ConfigFile)
            ServerRootPatch = lines(0)
            User = lines(1)
            PW = lines(2)

        End If
    End Sub
End Class

Form1.vb的

Imports System.ComponentModel
Imports System.Net
Public Class Form1
    Private LocalPath As String = "Downloadedfiles"
    Private missingFiles As New List(Of String)
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        FTPManager.loadConfig()
        createLocalFolderIfNotExistes()
        btnRefresh.performClick()
    End Sub
    Private Sub createLocalFolderIfNotExistes()
        If Not IO.Directory.Exists(LocalPath) Then IO.Directory.CreateDirectory(LocalPath)
    End Sub
Private Sub getLocalFiles()
        dgvLocal.Rows.clear
        Dim files = IO.Directory.GetFiles(LocalPath)
        If files.Count > 0 Then
            For Each f In files
                Me.dgvLocal.Rows.Add(f.Split("\c").Last())
            Next
        End If
    End Sub
    Private Sub getFTPFiles()
        dgvFTP.Rows.Clear()
        missingFiles.Clear()
        Dim request = FtpWebRequest.Create(FTPManager.ServerRootPatch)
        request.Method = WebRequestMethods.Ftp.ListDirectory
        request.Credentials = New NetworkCredential(FTPManager.User, FTPManager.PW)
        Dim response As FtpWebRequest = CType(request.GetResponse(), FtpWebResponse)
        Using myReader As New IO.StreamReader(response.GetResponseStream())
            Do Until Not myReader.EndOfStream
                Dim file = myReader.ReadLine()
                Me.dgvFTP.Rows.Add(file)
                If Not IO.File.Exists(LocalPath & "\" & file) Then
                    dgvFTP.Rows(dgvFTP.Rows.Count - 1).defaultCellStyle.BackColor = Color.FromArgb(255, 192, 192)
                    missingFiles.Add(file)
                Else : dgvFTP.Rows(dgvFTP.Rows.Count - 1).DefaultCellStyle.BackColor = Color.FromArgb(192, 255, 192)
                End If
            Loop
        End Using
    End Sub
    Private Sub btnRefresh_Click(sender As Object, e As EventArgs) Handles btnRefresh.Click
        '      If Not btnRefresh Then
        '     btnRefresh.Enabled = False
        '  Await Task.Delay(2000)
        '   getLocalFiles()
        '  getFTPFiles()
        '   btnSync.Enabled = True
        '  Else : MessageBox.Show("please wait")

        '  End If
        dgvFTP.ClearSelection()
        dgvLocal.ClearSelection()
    End Sub
    Private Sub btnSync_Click(sender As Object, e As EventArgs) Handles btnSync.Click
        If missingFiles.Count > 0 Then
            Donwload_File(New Uri(FTPManager.ServerRootPatch & FTPManager.Folder & "/" & missingFiles(0)))
        Else : MessageBox.Show("No files to downlaod")
        End If
    End Sub

    Private Sub Donwload_File(URI As Uri)
        Dim filename = URI.ToString().Split("/c").Last()
        prgb.Value = 0
        'lblFile.text = filename
        Using wc As New WebClient
            wc.Credentials = New NetworkCredential(FTPManager.User, FTPManager.PW)
            AddHandler wc.DownloadProgressChanged, AddressOf File_DLProgressChanged
            AddHandler wc.DownloadProgressChanged, AddressOf File_Downloaded
            wc.DownloadFileAsync(URI, LocalPath & "\" & filename)
        End Using
    End Sub

    Private Sub File_DLProgressChanged(sender As Object, e As DownloadProgressChangedEventArgs)
        prgb.Value = e.ProgressPercentage
    End Sub

    Private Sub File_Downloaded(sender As Object, e As AsyncCompletedEventArgs)
        Dim deletedFile = missingFiles(0)
        missingFiles.RemoveAt(0)

        If missingFiles.Count > 0 Then
            Donwload_File(New Uri(FTPManager.ServerRootPatch & FTPManager.Folder & "/" & missingFiles(0)))
        Else
            btnRefresh.PerformClick()
            MessageBox.Show("niquel")
        End If
    End Sub
End Class
vb.net ftp synchronization
1个回答
0
投票

问题在于:

Dim response As FtpWebRequest = CType(request.GetResponse(), FtpWebResponse)

阅读错误消息告诉您的内容,然后阅读该行。你调用GetResponse并将结果转换为类型FtpWebResponse,然后你尝试为该顶部分配一个FtpWebRequest类型的变量。错误消息告诉您无法将一种类型的对象转换为另一种类型的对象,这是该分配工作所必需的。

© www.soinside.com 2019 - 2024. All rights reserved.