Потоки, позволяющие отменить веб-запрос - PullRequest
0 голосов
/ 17 мая 2011

Я пишу веб-приложение, которое позволяет пользователям загружать большие файлы через веб-запрос http.Мне нужно дать им возможность отменить запрос, поэтому я создаю поток для запроса.Но пока идет загрузка, я все еще не могу запустить событие отмены.Что я делаю неправильно?Спасибо за любой вклад!

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 Ответ

2 голосов
/ 17 мая 2011

Прерывание потока с помощью thread.Abort, возможно, не тот способ, которым вы хотите это сделать.

Как насчет асинхронного веб-запроса в вашем методе DownloadImage?(См. http://msdn.microsoft.com/en-us/library/system.net.httpwebrequest.begingetresponse.aspx).Таким образом, вы можете вызывать метод веб-запроса .Abort, а не прерывать поток.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...