线程允许取消Web请求

时间:2011-05-17 03:32:35

标签: c# multithreading webrequest

我正在编写一个Web应用程序,允许用户通过http Web请求下载大文件。我需要给他们取消请求的选项,所以我为请求创建了一个线程。但是,在下载发生的同时,我仍然无法触发取消事件。我究竟做错了什么? 感谢您的任何意见!

public class downloadThread  { 
           public int isResume;
           public void downloadImage()
            { }
        }
            protected void btnDownload_Click(object sender, EventArgs e)
            {       var x = new downloadThread();
                    x.isResume = 0;

                    tRequest = new Thread(new ThreadStart(x.downloadImage));
                    tRequest.Start();
                    while (tRequest.IsAlive)
                    {
                      DownloadImage(); //this is where the rest request happens 
                    } }
            protected void btnCancelRequest_Click(object sender, EventArgs e)
            {
                if (tRequest != null && tRequest.IsAlive)
                {

                    tRequest.Abort();

                }
            }

1 个答案:

答案 0 :(得分:2)

使用thread.Abort中止线程可能不是你想要的方式。

您的DownloadImage方法中的异步Web请求如何? (见http://msdn.microsoft.com/en-us/library/system.net.httpwebrequest.begingetresponse.aspx)。这样你就可以调用web请求的.Abort方法,而不是中止线程。