我正在编写一个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();
}
}
答案 0 :(得分:2)
使用thread.Abort中止线程可能不是你想要的方式。
您的DownloadImage方法中的异步Web请求如何? (见http://msdn.microsoft.com/en-us/library/system.net.httpwebrequest.begingetresponse.aspx)。这样你就可以调用web请求的.Abort方法,而不是中止线程。