У меня есть приложение, которое запускает фоновый поток, который открывает сеанс WinSCP, который используется для выполнения каких-либо задач, например:
new Thread(() => {
//do stuff
SessionOptions options = new SessionOptions
{
//options
};
using(Session session = new Session())
{
bool success = false;
foreach (var ip in IPs)
{
options.HostName = ip.Value;
try
{
session.Open(options);
success = true;
break;
}
catch (Exception)
{
}
}
if(success)
{
CommandExecutionResult result = session.ExecuteCommand(*some command*);
result.Check();
someVariable = result.Output;
}
}
//do stuff
})
{
IsBackground = true
}.Start();
Теперь я заметил, что если я закрою приложение, находясь в using
поток действительно останавливается, но сеанс WinSCP остается открытым (может быть, потому что поток прерывается?), и если я повторяю процесс, я, конечно же, получаю больше сеансов WinSCP.Как закрыть определенный сеанс, который я открываю в приложении?
Отредактировано: добавлено больше того, что происходит в блоке using
.