Что лучший способ состоит в том, чтобы управлять деревом зависимостей в.NET?

Вы можете сохранить ссылку на поток, а затем прервать поток перед тем, как начинать новый. Как это:

private Thread passwordClearThread = null;

private void getPassword(int lifeInSeconds)
{
  int maxLifeBarValue = lifeInSeconds * 10;

  if (passwordClearThread != null && passwordClearThread.IsAlive)
  {
    passwordClearThread.Abort();
    passwordClearThread.Join();
  }

  passwordClearThread = new Thread
  (() =>
  {
    //Initialize the progress bar
    Invoke((MethodInvoker)delegate
    {
      lifeBar.Maximum = maxLifeBarValue;
      lifeBar.Value = maxLifeBarValue;
      lifeBar.Visible = true;
      Clipboard.SetText(pd.getAccountPassword(lstAccounts.Text));
    });

    //Loop to update the progress bar
    for (int x = maxLifeBarValue; x >= 0; x--)
    {
      Thread.Sleep(100);
      Invoke((MethodInvoker)delegate
      {
        lifeBar.Value = x;
      });
    }

    //Clear the system clipboard
    Clipboard.Clear();

    //Hide the progress bar when we're done
    Invoke((MethodInvoker)delegate
    {
      lifeBar.Visible = false;
    });
  });
  passwordClearThread.SetApartmentState(ApartmentState.STA);
  passwordClearThread.Start();
}
13
задан Daniel Dyson 25 June 2010 в 16:29
поделиться

2 ответа

Я думаю, что Вы могли использовать контейнер МОК как Spring для получения этого вида поведения.

Инстанцируйте любой задачи, которая должна только работать однажды как одиночный элемент и иметь конструктора объекта задачи, выполняет задачу. Затем любой объект, который приходит позже с зависимостью от той задачи, получит ссылку на задачу, которая уже работала и смочь получить результаты той задачи или смочь вывести, что та задача была уже выполнена успешно.

В пружинной конфигурации Вы закончили бы со многими задачами, объединенными в цепочку вместе, каждый ссылается на другие задачи в ее конфигурации конструктора. Этот подход является самым гибким, и Вы не ограничиваетесь "задачами" или чем-либо слишком тяжелым в этом отношении.

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

Я думаю для чего-либо меньшего, люди должны просто прокрутить свой собственный граф объектов и интерфейс с помощью шаблона "посетитель" и возможно Словаря для содержания состояния.

5
ответ дан 2 December 2019 в 01:57
поделиться

Взгляните на проект Refix на CodePlex. Это расшифровывается как REference FIX и работает очень хорошо.

1
ответ дан 2 December 2019 в 01:57
поделиться
Другие вопросы по тегам:

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