簡體   English   中英

處理執行時間太長而無法等待的方法

[英]Handling a method that takes too long to execute and is not awaitable

我們正在構建一種使用eConnect處理時間表的自定義方式。 公開了一種方法,允許將時間表文檔提交給GP。 此方法同步運行,但可能需要很長時間才能完成。 我該如何處理這個問題,以便用戶的客戶可以在此期間提出額外的請求?

我試圖在此方法上使用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調用,那么當上面的方法執行時,調用似乎沒有到達那里。 我希望方法調用在后台執行,以便客戶端仍然可以與服務器通信以執行其他請求。

我該如何處理這個問題,以便用戶的客戶可以在此期間提出額外的請求?

最簡單的解決方案是將會話狀態更改為“無”或“只讀”(對於此請求和其他請求)。 然后,ASP.NET將允許同一會話的多個客戶端請求。

如果您使用的是pre-Core,那么會話狀態文檔就在這里

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM