簡體   English   中英

C#-Backgroundworker和REST服務

[英]C# - Backgroundworker and REST service

我有一個使用backgroundworker調用類的Web服務,當我返回狀態200時,我在REST客戶端中收到此異常:

An asynchronous module or handler completed while an asynchronous operation was still pending.

我已經通過以下方式實現了我的服務:

    [Route("/service")]
    [HttpPost]
    public HttpResponseMessage generate(String value)
    {           
        Service service = new Service();
        service.Execute();
        return Request.CreateResponse(HttpStatusCode.OK);          
    }

這是我與backgroundworker一起上的課:

public class Service
{

    private BackgroundWorker worker = new BackgroundWorker();


    public void Execute(Client client)
    {
        worker = new BackgroundWorker
        {
            WorkerReportsProgress = true,
            WorkerSupportsCancellation = true
        };

        worker.DoWork += (obj, e) => GenerateContent(client);
        worker.RunWorkerCompleted += (obj, e) => GenerationCompleted(client.Token);


        worker.RunWorkerAsync();
    }

    private void GenerateContent(Client client)
    {
       //doStuff
    }


    private void GenerationCompleted(String token)
    {
        // TODO 
        Console.WriteLine("Finished");

    }
}

此實現有什么問題?

謝謝

您的Execute方法將在啟動BackgroundWorker之后立即返回(而不是等到GenerateContentGenerationCompleted運行之后)。 因此,當GenerateContent仍在工作時,您的服務將向客戶端返回HTTP 200結果。

暫無
暫無

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

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