我正在使用c#编写一个Windows窗体,用于安装WSP并将其部署到sharepoint服务器。 我遇到的问题是,当我检测到问题并退出应用程序或按下表单右上角的十字架时,表单将关闭,但任务仍在进程列表中。
我的退出代码是:
this.close();
application.quit();
我在表单之间切换的方式是:
form2.show();
form1.hide();
我到目前为止唯一的猜测是我使用了一些后台工作人员,可能这些工作人员不会同时被终止?
由于
答案 0 :(得分:3)
当所有未设置为后台线程的线程终止时,进程终止。
BackgroundWorker在代理上内部调用BeginInvoke,这会导致代码从ThreadPool运行一个线程。 ThreadPool线程将IsBackground设置为true,因此不应导致应用程序挂起。 BackgroundWorker不太可能导致问题。
更有可能的是,您在代码中有一个位置,您正在使用new Thread()
或类似手动创建新线程,并且您尚未将此线程的IsBackground成员设置为true。
答案 1 :(得分:1)
附加一个调试器应该很容易(如果在显示问题的机器上没有调试器,你可以获得Managed Stack Explorer)并且你可以进入流程以查看当前的线程执行。在Visual Studio中,您应该在“线程”窗口中查找正在执行代码的窗口。双击它,然后查看“调用堆栈”窗口以查看正在执行的操作。