Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用和调用EventHandler的问题_C#_Event Handling_Console Application - Fatal编程技术网

C# 使用和调用EventHandler的问题

C# 使用和调用EventHandler的问题,c#,event-handling,console-application,C#,Event Handling,Console Application,我正在使用并且在使用事件处理程序时遇到一些问题 根据文件,它有以下事件: 我对其中两个感兴趣: 转让完成事件 失败事件 我想在传输完成时显示一条消息,如果连接失败,则重新启动上载 在我的课堂上,我有以下几点: public static void uploadToSFTP() { try { SFTP myConnection = new SFTP(); myConnection.EnableLoggi

我正在使用并且在使用
事件处理程序时遇到一些问题

根据文件,它有以下事件:

我对其中两个感兴趣:

  • 转让完成事件
  • 失败事件
  • 我想在传输完成时显示一条消息,如果连接失败,则重新启动上载

    在我的课堂上,我有以下几点:

    public static void uploadToSFTP()
        {
            try
            {
                SFTP myConnection = new SFTP();
                myConnection.EnableLogging();
                myConnection.HostAddress = "servername";
                myConnection.UserName = "username";
                myConnection.Password = "password";
                myConnection.CurrentDirectory = "directory";
                myConnection.Connect();
    
                //UPLOADING FILE TO SFTP SERVER
                myConnection.UploadFileAsync(yesterdaysZipFile, localZipFileName);
    
                while (myConnection.IsBusy == true)
                {
                    //PRINT HOW LONG REMAINING FROM UPLOAD
                    Console.WriteLine(myConnection.EstimatedTimeRemaining);
                }
    
                //declaring an eventhandler  
                myConnection.TransferCompleteEvent += SFTPCompleted;
                myConnection.Disconnect();
                myConnection.Dispose();
             }
             catch (Exception ex)
             {
                 Console.WriteLine(ex.ToString());
             }
        } 
    
    然后我有

     public static void SFTPCompleted(Object sender, TransferCompletedEventArgs e)
       {
           Console.WriteLine("Completed");
       }
    
    我的问题是:

    myConnection.TransferCompleteEvent += SFTPCompleted;
    
    当我使用调试器到达这一行时,它会跳过并转到下一行,而这一行永远不会转到

       public static void SFTPCompleted(Object sender, TransferCompletedEventArgs e)
       {
           Console.WriteLine("Completed");
       }
    
    我做错了什么?

    关于
    FailureEvent
    我甚至无法编译它:

    myConnection.FailureEvent += TransferFailed;
    
    以下是活动:

    public static void TransferFailed(Object sender, SFTP.FailureEventHandler e)
    {
       Console.WriteLine("failed");
    }
    
    我遇到以下编译器错误:

    错误1“TransferFailed”的重载与委托“KellermanSoftware.NetSFtpLibrary.SFTP.FailureEventHandler”匹配

    这是我第一次使用这个图书馆。任何建议都会有帮助。

    这一行:

    myConnection.TransferCompleteEvent += SFTPCompleted;
    
    正在附加事件处理程序

    调用UploadFileAsync
    并等待事件处理程序停止忙碌后,您正在附加事件处理程序。在这一点上,事件可能已经触发,所以你错过了关于它的消息

    创建
    myConnection
    对象后,应立即附加事件处理程序

    SFTP myConnection = new SFTP();
    myConnection.TransferCompleteEvent += SFTPCompleted;   
    

    第二个问题是无法附加
    TransferFailed
    事件。这是因为处理函数中的参数错误。我猜应该是:

    public static void TransferFailed(Object sender, SFTP.FailurEventArgs e)
    

    查看
    SFTP.FailureEventHandler
    声明。它将告诉您需要哪些参数。

    您完全正确。当我把它向上移动时,它起作用了。使用文档,我修复了失败的事件<代码>公共静态无效传输失败(对象发送方,系统异常e)。非常感谢。