Я использую 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();
Я не смог найти никакого задокументированного способа прервать функцию обратного вызова Action
для метода DownloadFile
, поэтому я прибегнул к исключению.
Но проблема с таким подходом в том, что мое пользовательское исключение не перехватывается.
Есть идеи, как это исправить?