У меня есть одна кнопка, и когда я нажимаю на нее, я создаю один поток, и через 10 секунд я прерываю его. Когда я снова нажимаю на кнопку, создается новая тема, но проблема в том, что когда я использую AWAIT, эта тема не прерывается. Приложение показывает значение старого потока с вновь созданным потоком. Но когда я не использую AWAIT, он работает нормально. Ниже приведен пример моего Кодекса.
Логика с AWAIT (вы можете видеть на изображении ниже, что старая нить также работает) ![Click for View Image](https://i.stack.imgur.com/rn3WB.png)
try
{
var _Thread1 = new Thread(async () =>
{
int i = new Random().Next(10, 99);
while (true)
{
this.BeginInvoke(new Action(() =>
{
listBox1.Items.Add($"{i}");
}));
await Task.Delay(3000);
}
});
_Thread1.Start();
Thread.Sleep(10000);
_Thread1.Abort();
}
catch (Exception ex)
{
}
ВЫХОД 48 48 48 48 48 48 83 48 83 48 83 48 83
Логика без ожидания (ниже логика работает файл). ![Click for View Image](https://i.stack.imgur.com/EZnfM.png)
try
{
var _Thread1 = new Thread(async () =>
{
int i = new Random().Next(10, 99);
while (true)
{
this.BeginInvoke(new Action(() =>
{
listBox1.Items.Add($"{i}");
}));
Thread.Sleep(3000);
//await Task.Delay(3000);
}
});
_Thread1.Start();
Thread.Sleep(10000);
_Thread1.Abort();
}
catch (Exception ex)
{
}
ВЫХОД. 98 98 98 98 79 79 79 79
Я хочу прервать поток, когда он также использует AWAIT.
Я могу сделать с CancellationToken / Task, но есть ли другой способ? Я хочу знать, почему поток не прерывается при использовании AWAIT.
Заранее спасибо. :)