Вы можете создать специальный поток, который начнет новый процесс. Затем добавьте очередь для связи с этим потоком
Псевдокод:
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);
}
}
Этот подход позволяет вам иметь только один запущенный процесс в любое время
Приправление карри является действительно математическим понятием прежде всего. Это - справедливое наблюдение, которые для любого не функционируют f: S0×... Sn → R, можно определить новую функцию fprime (просто нашел ошибку скидки с цены!) с n-1 параметрами, где тот первый параметр заменяется константой. Так, если у Вас есть функция add(a,b)
, можно определить новую функцию add1(b)
как
add1(b) ::= add(1, b)
... чтение ":: =" как "определяется, чтобы быть".
Закрытие является большим количеством концепции программирования. (Конечно, все в программировании - математическое понятие также, но закрытия стали интересными из-за программирования.) При построении закрытия Вы связываете одну или несколько переменных; Вы создаете блок кода, который имеет некоторые переменные, связанные с ним.
Отношения - то, что можно использовать закрытие для реализации приправления карри: Вы могли создать Ваш add1
функция выше путем создания закрытия, в котором тот первый параметр связывается с 1.