gpt4 book ai didi

c# - 如何从 SftpClient 类的 DownloadFile() 函数 (SSH.NET) 中止操作?

转载 作者:行者123 更新时间:2023-11-30 18:14:46 33 4
gpt4 key购买 nike

我正在使用 SSH.NET通过安全的 SSH/SFTP 连接实现文件下载。我还需要能够看到下载进度,并能够在用户需要时中止下载。所以代码看起来像这样:

ConnectionInfo conn = new PasswordConnectionInfo(host, port, username, password);
SftpClient sshSFTP = new SftpClient(conn);
sshSFTP.Connect();

try
{
FileStream streamFile = File.Create(strLocalFilePath);

sshSFTP.DownloadFile(strFilePath, streamFile,
(ulong uiProcessedSize) =>
{
//Callback
processProgress(uiProcessedSize);

if(didUserAbortDownload())
{
//Aborted
throw new Exception("Aborted by the user");
}
});
}
catch (Exception ex)
{
Console.WriteLine("Download failed: " + ex.Message);
}

streamFile.Close();
sshSFTP.Disconnect();

我找不到任何记录的方法来中止 DownloadFile 方法的 Action 回调函数,所以我求助于抛出异常。

但这种方法的问题是我的自定义异常没有被捕获。

知道如何解决这个问题吗?

最佳答案

您可以使用他们的异步(虽然 not true async)流程,即 BeginDownloadFile。该方法返回的 IAsyncResult 实现,SftpDownloadAsyncResult ,通过其 IsDownloadCanceled 属性公开取消。

关于c# - 如何从 SftpClient 类的 DownloadFile() 函数 (SSH.NET) 中止操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49724721/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com