с использованием CancellationTokenSource на задаче Thats получает блокировкуCancellationToken для задачи, которая приобретает замок
Если поток получает блокировку, когда дезактивация встречается, это не освобождает замок
Кстати, нить необходимо немедленно прекратить, без finnishing работы
Это пример такого кода:
var cancellationTokenSource = new CancellationTokenSource;
Task.Run(new Action (() =>
{
while(true)
{
lock (locker)
{
DoSomething();
}
DoAnotherThing();
Task.Delay(1000, cancellationTokenSource.Token);
}
}), cancellationTokenSource.Token);
Я нашел несколько способов руки ле это, но я хотел бы услышать некоторые предложения
Благодарности
EDIT: Для того, чтобы ответить на вопрос @spender, это реализация мысль о (укороченный):
object locker = new object();
var cancellationTokenSource = new System.Threading.CancellationTokenSource;
var token = cancellationTokenSource.Token;
Task.Run(new Action (() =>
{
while(true)
{
lock (locker)
{
using (token.Register(() => token.ThrowIfCancellationRequested()))
{
break;
};
DoSomething();
}
DoAnotherThing();
Task.Delay(1000, cancellationTokenSource.Token);
}
}), cancellationTokenSource.Token);
Я хотел бы услышать ваши «несколько способов» ...? – spender
Ответил в редактировании оригинального сообщения –