我在C#中使用Renci SSH.NET作为SFTP客户端。
现在,我使用此API制作进度条。我尝试了异步并等待,但是找不到用于下载字节的解决方案。我尝试过这种方式:
您能告诉我我的代码有问题吗?
是否可以尝试使用Renci SSH.NET等待异步?并从API获取一些下载或上传的字节。
require()
答案 0 :(得分:0)
首先,您的代码有很多缺陷:
UploadResult
无法获得上传进度。将其传递给“状态”对象将无济于事。您应该将BeginUploadFile
返回的SftpUploadAsyncResult
强制转换为SftpUploadAsyncResult
,而不是创建新的SftpClient
。无论如何,由于我不认为uploadCallback
类本身具有任何会在上传进度上触发的事件,所以最简单的解决方案是使用BeginUploadFile
的{{1}}参数(第4个),与同步上传相同的方式。参见Displaying progress of file upload in a ProgressBar with SSH.NET。
sftp.BeginUploadFile(
stream, remotepath + "/" + Path.GetFileName(localpath), null, null, UpdateProgresBar);
然后使用“异步”上传是否对SftpClient
有好处,这是令人怀疑的。 Connect
方法没有“异步”变体,因此您仍然需要一个线程/任务,为什么不立即从该线程上载文件呢?