C# 关于任务在C中的适当使用的问题#
我有一个关于这个任务的问题。我有一个WCF应用程序,它有一个将从客户端应用程序调用的ReceiveEmpInfo方法 WCF服务器应用程序:C# 关于任务在C中的适当使用的问题#,c#,wcf,C#,Wcf,我有一个关于这个任务的问题。我有一个WCF应用程序,它有一个将从客户端应用程序调用的ReceiveEmpInfo方法 WCF服务器应用程序: public void ReceiveEmpInfo(string EmpName, string EmpId) { DifferentClass.SaveEmpToDB(string EmpName, string EmpId); return; } 我的要求是我想返回这个方法调用(ReceiveEmpInfo()),一旦我调用了这个方
public void ReceiveEmpInfo(string EmpName, string EmpId)
{
DifferentClass.SaveEmpToDB(string EmpName, string EmpId);
return;
}
我的要求是我想返回这个方法调用(ReceiveEmpInfo()
),一旦我调用了这个方法SaveEmpToDB()
,我就不想保留客户端调用,直到SaveEmpToDB()
方法将数据保存到数据库。我正在考虑使用Task,但我不确定它是否能满足我的需求
请给我你的建议
谢谢,
乔:是的,会的。调用
Task.Start()
后,您的WCF方法可以返回,任务将在“后台”运行。您必须非常小心,尤其是在IIS中运行此WCF服务时。如果这些任务运行时间很长,IIS应用程序池关闭(或重新启动),您的任务将在工作过程中受到潜在的影响。
顺便说一句:我假设您指的是:使用回调,对db或其他对象进行异步调用,
参见示例这很像这篇文章:
我认为流行答案中的链接应该会有所帮助。如果这是一个单向的“先开火后忘记”操作,您可以简单地进行该操作。这不会在方法执行期间阻塞客户端
[ServiceContract]
interface ISomeContract
{
[OperationContract(IsOneWay = true)]
void ReceiveEmpInfo(string EmpName, string EmpId)
}
如果我的服务是单服务(InstanceContextMode=single),IsOneWay将如何工作?@user654261我认为这不会引起任何问题。我刚刚创建了一个原型,运行良好。