Я пытаюсь создать глобальный сеанс WinSCP. Мне нужно использовать сеанс в двух разных местах в моем приложении до GetFiles
и PutFiles
. Моя проблема заключается в том, что для создания сеанса требуется очень много времени, чтобы замедлить работу приложения. Я попробовал то, что у меня есть, чтобы создать глобальный сеанс, но при запуске я получаю исключение для сеанса. Можно ли открыть сеанс в одном месте и использовать его повсюду в приложении.WPF Создать глобальный сеанс WinSCP
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
Session GlobalSession;
private static Session OpenSession()
{
SessionOptions sessionOptions = new SessionOptions
{
Protocol = Protocol.Sftp,
HostName = @"server",
UserName = "name",
PortNumber = 22,
SshHostKeyFingerprint = "ssh-rsa 2048 RSAKEY",
};
using (Session session = new Session())
{
// Connect
session.Open(sessionOptions);
return session;
}
}
public MainWindow()
{
Session LocalSession = OpenSession();
GlobalSession = LocalSession;
InitializeComponent();
}
private void Button_Click(object sender, RoutedEventArgs e)
{
string path = "";
try
{
// Upload files
TransferOptions transferOptions = new TransferOptions();
transferOptions.TransferMode = TransferMode.Binary;
TransferOperationResult transferResult;
RemoteDirectoryInfo subDirs = GlobalSession.ListDirectory(path);
foreach(var sub in subDirs.Files)
{
MessageBox.Show(sub.ToString());
}
}
catch (Exception ex)
{
Console.WriteLine("Error: {0}", ex);
}
}
private void Button_Click_1(object sender, RoutedEventArgs e)
{
try
{
// Upload files
TransferOptions transferOptions = new TransferOptions();
transferOptions.TransferMode = TransferMode.Binary;
TransferOperationResult transferResult;
transferResult = GlobalSession.GetFiles(@"d:\toupload\*", "/home/user/File", false, transferOptions);
// Throw on any error
transferResult.Check();
// Print results
foreach (TransferEventArgs transfer in transferResult.Transfers)
{
Console.WriteLine("Upload of {0} succeeded", transfer.FileName);
}
}
catch (Exception ex)
{
Console.WriteLine("Error: {0}", ex);
}
}
}
Ха-ха спасибо и да все передачи на фоне, я просто поставил здесь свой код, чтобы вам не нужно было видеть все 1000 строк :) – user3753693