Поточная обработка в C#. Прерываемая задача

Это - шаблон, за которым я обычно следую при установке ремня безопасности для тестирования абстрактного класса:

public abstract class MyBase{
  /*...*/
  public abstract void VoidMethod(object param1);
  public abstract object MethodWithReturn(object param1);
  /*,,,*/
}

И версия я использую под тестом:

public class MyBaseHarness : MyBase{
  /*...*/
  public Action<object> VoidMethodFunction;
  public override void VoidMethod(object param1){
    VoidMethodFunction(param1);
  }
  public Func<object, object> MethodWithReturnFunction;
  public override object MethodWithReturn(object param1){
    return MethodWihtReturnFunction(param1);
  }
  /*,,,*/
}

, Если абстрактные методы называют, когда я не ожидаю его, тестовый сбой. При расположении тестов я могу легко погасить абстрактные методы с лямбдами, которые работают, утверждает, выдайте исключения, возвратите различные значения, и т.д.

5
задан ALOR 11 August 2009 в 06:02
поделиться

3 ответа

Взгляните на BackgroundWorker ; в частности, WorkerSupportsCancellation . Вот пример того, что вы хотите сделать в WPF Multithreading:

10
ответ дан 14 December 2019 в 01:13
поделиться

Ну, вы можете проверить, нужно ли его останавливать, каждую итерацию цикла, проверив логическое значение. Или просто используйте его .interrupt () и обработайте исключение (если это безопасно в любой момент).

-1
ответ дан 14 December 2019 в 01:13
поделиться

. Прерывание () в потоке - не лучший способ, единственный хороший способ - с логическим значением, как вы говорите в своем ответе.

0
ответ дан 14 December 2019 в 01:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: