即使退出应用程序,线程也在运行

时间:2013-06-07 18:25:18

标签: c# multithreading httpwebrequest compact-framework

我的应用程序嵌入了Windows(CompactFramework)时出现问题。 我需要连接到互联网,所以我向互联网发出虚拟请求以激活连接。

我将此代码用于该任务:

WebRequest request = null;
HttpWebResponse response = null;

try
{
    // Create a request for the URL.
    request = WebRequest.Create("http://www.contoso.com/default.html");

    request.Credentials = CredentialCache.DefaultCredentials;

    // Get the response.
    request.Timeout = 10000;
    response = (HttpWebResponse)request.GetResponse();

    if ("OK".Equals(response.StatusDescription))
        res = true;
    else { /** Message **/ }

}
catch (WebException) { /*Message*/ }
catch (Exception e) {/*Message*/}
finally 
{
    if (response != null) response.Close();
    if (request != null) request.Abort();
}

try
{
    if (response != null) response.Close();
}
catch (Exception e) { /*Message*/ }

try
{
    if (request != null) request.Abort();
}
catch (Exception e) { /*Message*/ }

我的问题是,当我退出我的应用程序时,有一些线程可以保持活着状态。我想在退出应用程序时杀死所有线程。

当我调试我的应用程序并观察线程时,我得到以下信息: enter image description here

在图片中,您可以检查Start()方法是否抛出最后两个线程。 当我单击退出按钮时,我再次检查并且两个线程是唯一仍然存活的线程: enter image description here

我不明白为什么这些线程还活着。

我想知道如何避免这种行为。

感谢您的帮助!

0 个答案:

没有答案