Asyn进程在API中处理对象时停止API
问题描述:
当我调用web api时,asyn方法启动进程。完成API过程后,asyn进程也停止。这是我的示例代码片段。请为此提供任何解决方案。Asyn进程在API中处理对象时停止API
private readonly ITestService testservice;
public TestController(ITestService test)
{
this.testservice=test;
}
[Route("Sample/SaveMyData")]
[HttpPost]
public IHttpActionResult SaveMyData(MyInfo info)
{
MyInfo inf = new MyInfo();
inf = testservice.SaveMyInformation(info);
SendMailProcess(inf)
return Ok<MyInfo>(inf);
}
private async Task<bool> SendMailProcess(MyInfo emailInfo)
{
await Task.Run(()=> this.testservice.SendMail(emailInfo));
return true;
}
答
@Eraiarasu,你正在创建你的SendMailProcess一个单独的线程而这就是为什么你的API调用完成SendMailProcess完成之前。
此外,如果您尝试创建异步方法,请尝试在SaveMyData中将SendMailProcess方法调用置于等待状态。也将SaveMyData设置为async。请注意,您在.NET中的smtp api中具有SendAsync方法。因此,您不必像使用SendMailProcess那样使用Task.Run
感谢您的回复。如果我想更新数据库中的某些内容,如何在web api中使用异步? –
您有所有数据库访问方法的异步对应项。 E.x,ExecuteNonQueryAsync可用于执行UPDATE。 – Martin
感谢triman。第一个解决了我的问题 –