У вас есть другой процесс, выполняющийся на одном и том же порту.
Вы можете попробовать убить одну из java.exe-служб, запущенных в вашем диспетчере задач - ps убедитесь, что вы не убиваете eclipse, так как это указано как java.exe. Если ничего не работает, перезапуск вашей машины все равно исправит. Похоже, вы не закрываете сокет из предыдущего теста. Надеюсь, это поможет.
Вы можете создать специальный поток, который начнет новый процесс. Затем добавьте очередь для связи с этим потоком
Псевдокод:
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);
}
}
Этот подход позволяет вам иметь только один запущенный процесс в любое время