Параллельное выполнение метода при нажатии кнопки

Работая с потоками и пулом потоков в первый раз, у нас есть два нажатия кнопки, которые вызывают вызов 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;
   }

Ваше здоровье.

веб-запросы уже выполняются в отдельных потоках, если вы используете MVC / Web API

vasily.sib 03.07.2018 10:40
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
1
199
1

Ответы 1

Реализован ли сон на клиенте или на сервере? Для чего пользователю нужно нажать «утвердить», а затем «утвердить дату»?

В любом случае, чтобы запускать задачи параллельно, я бы сделал это следующим образом:

Task<MyReturnType> firstTask;
Task<MyReturnType> secondTask;

//create the tasks, but not acutal execute it
firstTask = this.DoMethod1(); // return a Task<MyReturnType> -> uses await
secondTask = this.DoMethod2(); // return a Task<MyReturnType> -> uses await

//execute it in parallel and return if all tasks are done
await Task.WhenAll(firstTask, secondTask).ConfigureAwait(false);

Я думаю, ваш возвращаемый тип - это «объект». Эта ссылка может быть полезной: https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/concepts/async/how-to-make-multiple-web-requests-in-parallel-by-using-async-and- Ждите

Сон реализован в скриптах, которые выполняются на стороне сервера и возвращают значение, просто чтобы проверить параллельное выполнение. Кнопки являются динамическими, мы можем добавить любое количество кнопок, которые можно использовать, например, для проверки статуса, даты заказа, запроса заказа и т. д. В зависимости от условия в загруженном сценарии C#.

pavan 03.07.2018 11:17

Другие вопросы по теме