У меня небольшая проблема с поиском того, как отменить эту задачу на C#. Я не очень хорошо разбираюсь в работе с потоками и пытался найти в Googlе несколько простых примеров кода, чтобы помочь мне, но я ни к чему не пришел. Вот кусок кода, над которым я работаю:
var tasks = urls.Select(url => Task.Factory.StartNew(
state =>
{
using (var client = new WebClient())
{
lock (this)
{
// code to download stuff from URL
}
}
}, url)).ToArray();
try
{
Task.WaitAll(tasks);
}
catch (Exception e)
{
textBox2.AppendText("Error: " + e.ToString());
}
Где "urls" - массив URL. Есть ли простой способ сделать так, чтобы при нажатии на кнопку в моей программе загрузка URL полностью останавливалась? Кроме того, фрагмент кода, который я вставил, находится в функции, которую вызывает backgroundWorker1, что, я полагаю, может немного усложнить ситуацию. (Причина, по которой у меня есть backgroundWorker, заключается в том, что пользовательский интерфейс не блокируется во время загрузки URL)
Если это как-то смущает, вот схема того, чего я пытался достичь с помощью моего кода:
Заранее спасибо.