【发布时间】:2016-06-06 15:47:42
【问题描述】:
我有一个用 C# 制作的桌面应用程序。该应用程序通过 SSH 连接到 Solaris 服务器并在那里执行某些作业。应用程序的登录基于用于登录 Solaris 服务器的用户凭据。当用户输入他的 Solaris 凭据时,它会访问服务器并检查凭据是否正确。
问题是,应用程序在后台工作人员中运行作业。对于大多数用户,应用程序运行良好,但对于特定用户,myworker.RunWorkerAsync() 不起作用,这意味着控制权永远不会传递给 do_work。
我尝试在另一台机器上调试它,但结果仍然相同。所以,它不是系统特定的问题,但我不明白为什么每个人都正确创建并运行后台工作人员,但只针对特定用户而不是。
【问题讨论】:
-
如果您希望我们帮助您编写代码,您应该展示您的代码。另外,当你调试它时你发现了什么。如果您在后台工作方法的第一行设置断点,断点是否会被命中?如果是这样,它会在哪一行引发异常并失败?
-
这个用户登录成功了吗?他们是否有权访问您正在尝试执行的任何操作?
-
我把断点放在do worker中,控制就在里面。我从他们那里通过 ssh 与 Solaris 服务器建立了连接。然后我从那里运行一个特定的任务。在调试时,运行任务时出现“SshOperationTimeoutException”异常。当我运行该应用程序时,winform 中的 throbber/animated image 继续移动,并且工作继续进行,就好像它在无限循环中运行并且没有任何反应。
标签: c# .net ssh backgroundworker