Тест выглядит следующим образом:Почему этот тест продолжает терпеть неудачу?
[TestMethod()]
public void IncrementTestNegative() {
CancellationTokenSource s = new CancellationTokenSource();
s.CancelAfter(10);
ManualResetEventSlim evt = new ManualResetEventSlim();
bool breached = false;
Task.Run(() => {
Thread.Sleep(200);
breached = true;
}, s.Token).ContinueWith((t) => {
evt.Set();
});
evt.Wait();
Assert.IsFalse(breached);
}
Если я обеспечить значение «0», чтобы CancelAfter, то тест завершается успешно. Почему этот тест продолжает терпеть неудачу с другими значениями.
Это использует структуру MS Test в Visual Studio Express,
Поскольку продолжение будет выполняться, даже если токен, переданный в Run, уже отменен, но родительская задача не будет. Он не подходит для других значений, потому что аннулирование является совместным. Запуск проверяет маркер перед запуском задачи, а не посередине. –
Отмена маркера ** не прерывает задачу. Линия 'Thread.Sleep (200)', кажется, подразумевает, что вы ожидаете, что это будет прервано (после, скажем, 10 мс)? – Groo