应用程序暂时挂起主线程

时间:2014-07-20 19:09:10

标签: vb.net windows backgroundworker hang ui-thread

我正在尝试使用WinSCP和vb.net连接到SFTP服务器。一切顺利,文件上传/下载正确但在完成后,如果我以任何方式与表单交互(即按下按钮)主线程挂起大约10-15秒。然后它会恢复并且永远不会再次挂起,除非我重新启动应用程序。这对我来说似乎很奇怪,因为我使用BackgroundWorker在一个单独的线程上执行所有WinSCP函数。我使用mySession.putFiles进行上传,GetFiles进行下载。这似乎只在下载/上传文件时发生。

以下是我的代码片段,它基于This Example

Using mySession As Session = New Session
' Connect
mySession.Open(mySessionOptions)

' Upload files
Dim myTransferOptions As New TransferOptions
myTransferOptions.TransferMode = TransferMode.Binary

Dim transferResult As TransferOperationResult
transferResult = mySession.GetFiles("KidsBank/FVbal.txt", "FVbal.txt") 

transferResult.Check()
ConsolePrint("Got fv")
transferResult = mySession.GetFiles("KidsBank/FERbal.txt", "FERbal.txt")
transferResult.Check()
ConsolePrint("Got fer")
transferResult = mySession.GetFiles("KidsBank/AZbal.txt", "AZbal.txt")
transferResult.Check()
ConsolePrint("Got az")

LoadingText.Text = "Downloading Check Dates..."

transferResult = mySession.GetFiles("KidsBank/FVlastcheck.txt", "FVlastcheck.txt") 
transferResult.Check()
ConsolePrint("Got fv check")
transferResult = mySession.GetFiles("KidsBank/FERlastcheck.txt", "FERlastcheck.txt")
transferResult.Check()
ConsolePrint("Got fer check")
transferResult = mySession.GetFiles("KidsBank/AZlastcheck.txt", "AZlastcheck.txt")
transferResult.Check()
ConsolePrint("Got az check")

1 个答案:

答案 0 :(得分:0)

删除ConsolePrint命令是个问题,因为我在False中使用CheckForIllegalCrossThreadCalls进行调试。