我正在使用Kellerman .NET SFTP Library 而我在使用event handlers
根据文档,它有以下事件:
我对其中两个感兴趣:
我想在传输完成时显示一条消息,如果连接失败则重新启动上传。
在我的班上,我有以下内容:
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'
这是我第一次使用这个库。任何建议都会有所帮助。
答案 0 :(得分:2)
这一行:
myConnection.TransferCompleteEvent += SFTPCompleted;
附加了一个事件处理程序。
您在调用UploadFileAsync
并等待它停止忙碌后附加事件处理程序。此时,事件已经被解雇,所以你错过了听到它。
创建myConnection
对象后,应立即附加事件处理程序。
SFTP myConnection = new SFTP();
myConnection.TransferCompleteEvent += SFTPCompleted;
您的第二个问题是您无法附加TransferFailed
事件。那是因为你的处理函数中有错误的参数。我的猜测应该是:
public static void TransferFailed(Object sender, SFTP.FailurEventArgs e)
查看SFTP.FailureEventHandler
声明。它会告诉你需要的参数。