在将应用程序变成更像后台任务的过程中,我注意到一些奇怪的行为。当我运行这样的东西时它工作正常(类似于我正在修改的旧代码):
using (Foo f = new Foo(stuff)) {
f.doSomething();
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form());
}
在后台进行此运行的第一步当然是删除对表单/渲染的引用:
using (Foo f = new Foo(stuff)) {
f.doSomething();
}
然而,这种方式行不通。当我运行它时,我使用的库(与 Windows 窗体没有任何关系)不再正常工作。这没有我计划做的任何其他更改。只删除这三行。如果相关,Foo
在实际代码中是一个创建 SSH 隧道的类(使用 SSH.NET 库),但它没有通过表单/设计器中的任何代码(直接或间接)引用,它只需要设置/拆除,以便建立连接。
该错误发生在连接到隧道之前,而是在尝试连接到远程主机并转发端口时发生。库报告连接已建立 ( IsConnected
is true
),但是当端口转发启动时,它会报告异常并显示消息"Session is not connected"