我需要实现一个方法,该方法不希望返回对另一个方法的调用来返回OK。该怎么做?
我尝试使用'await',但这要等到返回“ OK”
[WebMethod] //WebServiceMethod
public string ImportaDadosPosLeilaoValores(string fileName)
{
// this call may take several minutes and should NOT be expected
ImportaDados(fileName);
return "OK - Received"; // immediately
}
对方法的调用,即立即返回OK通知接收文件,在后台,被调用的方法将一直工作到完成,完成后将不返回任何内容
答案 0 :(得分:-1)
您要衍生一个新的异步任务。本示例使用静态Task.Run并传入匿名异步任务。对Task.Run()的调用是同步执行的,但是在Task.Run()中匿名任务的执行却没有,它看起来是如此之快就完成了。
using System.Threading.Tasks;
[WebMethod] //WebServiceMethod
public string ImportaDadosPosLeilaoValores(string fileName)
{
// this call may take several minutes and should NOT be expected
Task.Run(() => {
ImportaDados(fileName);
});
return "OK - Received"; // immediately
}
我不熟悉[WebMethod]的来源,但您可能想完全异步。在此示例中,您的调用方法和被调用方法是异步的,并且不等待被调用任务,这将按您希望的方式执行。
using System.Threading.Tasks;
[WebMethod] //WebServiceMethod
public async Task<string> ImportaDadosPosLeilaoValores(string fileName)
{
// this call may take several minutes and should NOT be expected
ImportaDados(fileName);
return "OK - Received"; // immediately
}
public async Task ImportaDados(string filename)
{
}
任务在线程上运行,并由管理每个任务的同步状态的调度程序执行。除非有特殊原因,否则不要直接使用线程。