Мое значение IsCancellationRequested не изменяется после token.cancel (); - PullRequest
0 голосов
/ 15 февраля 2019

Я пытаюсь загрузить несколько файлов (C #, asp.net), используя asp: fileupload, и я хочу, чтобы этот процесс выполнялся в отдельном потоке и имел возможность остановить процесс, нажав кнопку отмены, поэтому я создаю новую задачу, котораяя действительно выполняю в отдельном потоке, но когда я помещаю эту строку в код отмены tokenSource.Cancel (), значение if (tokenSource. IsCancellationRequested) все еще ложно, поэтому процесс продолжается до конца и не останавливается, а это код:

>

  private CancellationTokenSource tokenSource= new CancellationTokenSource();
    private CancellationToken token;
    protected void submitupload_Click(object sender, EventArgs e)
    {
        fileCollection = Request.Files;
        string confirmValue = Request.Form["confirm_value"];
        if (confirmValue == "Yes" && Selected_folder_name.SelectedIndex > 0)
        {   
            if (FileUpload.HasFile)
               {
                tokenSource = new CancellationTokenSource();
                token = tokenSource.Token;
                Task.Factory.StartNew(() =>
                     {
                       int count = 0;
                       while (!tokenSource.Token.IsCancellationRequested && 
                               count<fileCollection.Count)
                         {
                           HttpPostedFile uploadfile = fileCollection[count];
                        String fileName = Path.GetFileName(uploadfile.FileName);
                 string fileExxtension = Path.GetExtension(uploadfile.FileName);
                 uploadfile.SaveAs(Chosen_Site_Path + @"\" 
       +Selected_folder_name.SelectedItem.Text + @"\" + fileName);
                   count++;
                     }
                  }, token);

                }               
            }
    }
     protected void cancelupload_Click(object sender, EventArgs e)
    {
       tokenSource.Cancel();
    }
...