![](/img/trans.png)
[英]What is the suggested way to add timer and backgroundworker in a c# gRPC service
[英]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
之后立即返回(而不是等到GenerateContent
和GenerationCompleted
運行之后)。 因此,當GenerateContent
仍在工作時,您的服務將向客戶端返回HTTP 200結果。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.