Я уже несколько дней здесь участвовал в WinSCP, и все, что мне не хватает, - это правильно открыть сеанс.Использование экземпляра класса, созданного одним методом, из другого метода
Здесь инициализируется Session
.
Private Sub Loginbutton_Click(sender As Object, e As EventArgs) Handles Loginbutton.Click
mySession = New Session()
Dim mySessionOptions As New SessionOptions
With mySessionOptions
.Protocol = Protocol.Sftp
.HostName = "192.168.0.247"
.UserName = "usr"
.Password = "pw"
.SshHostKeyFingerprint = "ssh-rsa KEY"
End With
Using mySession As Session = New Session
mySession.Open(mySessionOptions)
End Using
Form1.Show()
Me.Close()
End Sub
На следующей форме мне нужно использовать Session
снова, и здесь я использовал
Public Sub Open(ByVal sessionOptions As SessionOptions)
Me.Show()
For Each i As RemoteFileInfo In mySession.ListDirectory("/Database/").Files
Objectlist1.Items.Add(i.Name)
Next
Objectlist1.Refresh()
End Sub
Это прямо здесь работает. Который, кажется, открывает сессию по мере необходимости на этом этапе. Но моя проблема возникает, когда мне нужно несколько раз открывать сеанс в той же форме, поскольку она не остается открытой сама по себе, если это возможно.
Что-нибудь еще, что мне нужно сделать в приложении, не может открыть сеанс, поскольку у меня не может быть несколько «открытых открытых открытых» по линии. Если здесь есть люди WinSCP, могу ли я заставить сеанс оставаться в живых, пока приложение не будет закрыто? Какой-нибудь умный способ «открытия сессии» несколько раз в одной форме?
Мне трудно объяснить.
Пример:
У меня есть тикер/таймер, который обновляет список, расположенный по форме 1 (Objectlist1)
И это помечает каждый 5.th второй.
Вот код используется:
Private Sub Timer2_Tick(sender As Object, e As EventArgs) Handles Timer2.Tick
Objectlist1.Clear()
For Each i As RemoteFileInfo In mySession.ListDirectory("/Database").Files
Objectlist1.Items.Add(i.Name)
Next
End Sub
Проблема заключается в том, хотя, когда он тикает, я получаю сессия не открывается, System.InvalidOperationException
, который в основном .. Сессия не открыта .. Теперь, так как его открыли дальше в форме, мне, видимо, нужно открыть его снова? Или я могу что-то изменить в Public Sub Open(ByVal sessionOptions As SessionOptions)
, чтобы он мог оставаться в живых по всей форме или?
Любые советы здесь, ребята?
Еу Мартин, Да я думал, что это было что-то в этом роде. Я сделал все, что вы посоветовали до сих пор, но .Open (mySessionOptions) появляется на других формах, которые не объявлены. См. В первом, где я вошел в систему, все работает нормально. В других формах работает новая сессия, но mySession.Open (mySessionOptions) не объявляется по какой-либо причине. Я что-то пропустил в модуле? – PiperMp3
Ну, тогда 'mySession' должен быть по всему проекту. См. [Объявить глобальные переменные в Visual Studio 2010 и VB.NET] (http://stackoverflow.com/questions/4529862/declare-global-variables-in-visual-studio-2010-and-vb-net) –
Project- Широкий! Есть что-то, что может сработать. Хорошо, я проверю это и посмотрю, как это происходит: D Спасибо Прикрилу! – PiperMp3