Я пытаюсь загрузить несколько файлов (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();
}