退出n#应用程序会将其留在内存中

时间:2010-01-19 08:33:39

标签: c# sharepoint forms process quit

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

我的退出代码是:

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

我在表单之间切换的方式是:

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

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

由于

2 个答案:

答案 0 :(得分:3)

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

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

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

答案 1 :(得分:1)

附加一个调试器应该很容易(如果在显示问题的机器上没有调试器,你可以获得Managed Stack Explorer)并且你可以进入流程以查看当前的线程执行。在Visual Studio中,您应该在“线程”窗口中查找正在执行代码的窗口。双击它,然后查看“调用堆栈”窗口以查看正在执行的操作。

相关问题