0

我正在使用 c# 编写一个 Windows 窗体,它将 WSP 安装和部署到共享点服务器。我遇到的问题是,当我检测到问题并退出应用程序或按下表单右上角的十字时,表单关闭但任务仍在进程列表中。

我的退出代码是:

this.close();
application.quit();

我在表格之间更改的方式是:

form2.show();
form1.hide();

到目前为止,我唯一的猜测是我使用了一些后台工作人员,可能这些工作人员没有同时被终止?

谢谢

4

2 回答 2

3

当所有未设置为后台线程的线程终止时,该进程终止。

BackgroundWorker 在委托上内部调用 BeginInvoke,这会导致代码从 ThreadPool 中运行一个线程。ThreadPool 线程将 IsBackground 设置为 true,因此它不会导致应用程序挂起。BackgroundWorker 不太可能导致问题。

更有可能的是,您的代码中有一个位置,您正在使用new Thread()或类似方法手动创建一个新线程,并且您尚未将此线程的IsBackground成员设置为 true。

于 2010-01-19T08:38:47.813 回答
1

附加调试器应该很容易(如果您在出现问题的机器上没有调试器,您可以获取托管堆栈资源管理器)并且您可以中断进程以查看当前正在执行的线程。在 Visual Studio 中,您应该查看“线程”窗口并找到正在执行您的代码的线程。双击它,然后查看调用堆栈窗口,看看是什么阻碍了它。

于 2010-01-19T08:40:26.890 回答