Работая с потоками и пулом потоков в первый раз, у нас есть два нажатия кнопки, которые имеют вызов ajax для передачи двух параметров одному и тому же методу контроллера с разными значениями.
Html:
<button type="button" class="ApproveBtn btn btn-theme">Approve</button>
<button type="button" class="ApproveOrdDateBtn btn btn-theme">Approve OrderDate</button>
Когда первая кнопка нажата, она имеет динамический сценарий с временем ожидания 20 секунд, а вторая кнопка имеет сценарий с временем ожидания 5 секунд.
В методе репозитория я попробовал как пул потоков, так и поток задач, чтобы запустить функцию параллельно, когда мы нажимаем две кнопки одновременно, одну за другой.
Ожидается вывод, что вторая кнопка с небольшим временем ожидания должна запускаться первой, а затем вторая кнопка, чтобы отобразить результат пользователям, но в моем случае, когда мы нажимаем сначала, выполняется, а затем следующая.
Код:
Public object Execute(string sScript, string sDatabase)
{
Object oResult="";
//Thread pool
var waitHandle = new ManualResetEvent(false);
ThreadPool.QueueUserWorkItem
(
new WaitCallback
(
(_) =>
{
oResult = RunScriptDemo(sScript,sDatabase);
waitHandle.Set();
}
)
);
waitHandle.WaitOne();
//Task with thread
var t = Task<object>.Factory.StartNew(() =>
{
Object oTskResult = RunScriptDemo(sScript,sDatabase);
return oTskResult;
});
oResult = t.Result;
return oResult;
}
Public object RunScriptDemo(string sScript, string sDatabase)
{
object oReturn="";
return oReturn;
}
Приветствие.