应用程序不是来自任务管理器

时间:2009-10-15 06:52:44

标签: c# windows-mobile compact-framework

如果我从任务管理器执行end-task,我有一个运行该线程的应用程序 应用程序正在退出但是,在进程列表中将运行一个实例(即,如果我执行5次最终任务5次进程运行)。这可能是由于线程。

在这种情况下,如果我必须杀死所有进程,我需要重启设备: - (。

手动,如果我退出它很有效。如何克服这个问题?

我正在c#中开发应用程序

3 个答案:

答案 0 :(得分:4)

正如elder_george指出的那样,你有一个流氓线程阻止应用程序退出,你需要确保在你的应用程序关闭时该线程退出。使用CF 3.5,您通常可以将IsBackground属性设置为truw,尽管这并不总是足够的。如果线程在系统调用中阻塞(如WaitOne之类的无限等待),则线程将无法获取调度,但仍可能无法终止。

最佳方法可以防止这种情况,这是一种很好的做法,就是实际编写代码来指示您的工作线程将自己关闭。这通常通过重置事件或线程定期检查的布尔标志来完成。

void MyThreadProc()
{
    // set this event when the app is shutting down
    while(!shutdownEvet.WaitOne(0, false))
    {
        // do my thread stuff
    }
}

此机制也适用于CF 2.0(其中IsBackground不存在)。

答案 1 :(得分:1)

将线程上的IsBackground属性设置为true。

答案 2 :(得分:0)

嘿,我得到了解决方案,

当我从任务管理器执行结束任务时,控件将出现在“Application.Run()”方法旁边。 在那里我们可以调用一个用户定义的函数,因为我们可以执行所有必要的任务,比如查杀线程,清理内存等等。顺利结束应用程序。

感谢您的回复。