как запустить процесс после завершения другого асинхронного процесса (независимый от веб-запроса)

У вас есть другой процесс, выполняющийся на одном и том же порту.

Вы можете попробовать убить одну из java.exe-служб, запущенных в вашем диспетчере задач - ps убедитесь, что вы не убиваете eclipse, так как это указано как java.exe. Если ничего не работает, перезапуск вашей машины все равно исправит. Похоже, вы не закрываете сокет из предыдущего теста. Надеюсь, это поможет.

2
задан Wahid Masud 17 January 2019 в 16:16
поделиться

1 ответ

Вы можете создать специальный поток, который начнет новый процесс. Затем добавьте очередь для связи с этим потоком

Псевдокод:

public class ApiController
{
  private Queue<string> queue = new Queue<string>();
  private object sync = new object();

  public ApiController()
  {
    // create a thread here or on web app start
  }

  private void ThreadProc()
  {
    while (true)
    {
      string filename = null;
      lock (sync)
      {
        if (queue.Count() > 0)
          filename = queue.Dequeue();
      }

      if (filename != null)
      {
        // create process
      }
      else
      {
        Thread.Sleep(100);
        continue;
      }
    }
  }

  public void ApiMethod()
  {
    // save file from request stream and pass name of this file to thread
    string filename = ...
    lock (sync)
      queue.Enqueue(filename);
  }
}

Этот подход позволяет вам иметь только один запущенный процесс в любое время

0
ответ дан Aleks Andreev 17 January 2019 в 16:16
поделиться
Другие вопросы по тегам:

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