Обработка метода, который выполняется слишком долго и не является ожидаемым - PullRequest
0 голосов
/ 19 апреля 2019

Мы создаем собственный способ обработки расписаний с использованием eConnect. Раскрыт метод, позволяющий отправлять документы расписаний в ГП. Этот метод выполняется синхронно, но может занять много времени. Как я могу справиться с этим, чтобы клиент пользователя тем временем мог делать дополнительные запросы?

Я пытался использовать async / await для этого метода, но поскольку метод не является ожидаемым, он не будет работать. Метод зависит от службы Windows. Я исследовал возможность обернуть его в Task.Run, но у меня есть сомнения, так как это звучит как плохая практика.

    public bool SaveTimesheets(string ConnectionString, List<PATimeSheetsType> Timesheets)
    {
        string timesheetDocument = string.Empty;
        //Creating timesheet document

        bool result = false;

        eConnectMethods eConnectMethods = new eConnectMethods();

        //CreateEntity takes minutes to complete and return
        result = eConnectMethods.CreateEntity(ConnectionString, timesheetDocument);


        return result;
    }

Поведение, которое я сейчас получаю, состоит в том, что, если, например, я выполняю ajax-вызовы на стороне клиента, кажется, что вызов не происходит, пока выполняется вышеуказанный метод. Мне бы хотелось, чтобы вызов метода выполнялся в фоновом режиме, чтобы клиент мог по-прежнему связываться с сервером для выполнения других запросов.

1 Ответ

0 голосов
/ 20 апреля 2019

Как я могу справиться с этим, чтобы клиент пользователя мог делать дополнительные запросы за это время?

Самое простое решение - изменить состояние сеанса на None или только для чтения (как для этого, так и для других запросов). Затем ASP.NET разрешит несколько клиентских запросов для одного сеанса.

Если вы используете Pre-Core, документы о состоянии сеанса находятся здесь .

...