gpt4 book ai didi

ASP.Net Web 服务 : Running code Asynchronously

转载 作者:行者123 更新时间:2023-12-04 15:14:40 26 4
gpt4 key购买 nike

我有一个可以分为两个主要部分的 Web 服务:

[WebMethod]
MyServiceCall()
{
//Do stuff the client cares about

//Do stuff I care about
}

我想做的是在另一个线程上运行第二部分,以便客户端不会等待它:一旦用户的逻辑完成,立即向他们发送他们的信息,但继续处理我关心的东西(记录, 等等)。

从 Web 服务中,异步运行第二部分的推荐方法是什么,以尽快让用户返回他们的信息? BackgroundWorker ? QueueUserWorkItem ?

最佳答案

您可能需要查看 Tasks这是 .NET 4.0 的新特性。

它允许您启动异步操作,但也为您提供了一种简单的方法来查看它是否稍后完成。

var task = Task.Factory.StartNew(() => DoSomeWork());

它将启动 DoSomeWork() 并继续而不等待,以便您可以继续进行其他处理。当您在异步任务完成之前不想再处理时,您可以调用:
task.Wait();

它将在那里等待,直到任务完成。如果你想从任务中得到结果,你可以这样做:
var task = Task.Factory.StartNew(() =>
{
Thread.Sleep(3000);
return "dummy value";
});
Console.WriteLine(task.Result);

对 task.Result 的调用会阻塞,直到结果可用。

这是一个更详细地介绍任务的教程: http://www.codethinked.com/net-40-and-systemthreadingtasks

关于ASP.Net Web 服务 : Running code Asynchronously,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8839433/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com