C# QueueBackgroundWorkItem(操作<;取消令牌>;)和QueueBackgroundWorkItem(功能<;取消令牌,任务>;)之间的差异
我正在寻找一种在Asp.Net中发送后台电子邮件而不必完全等待的方法,并遇到了“HostingEnvironment.QueueBackgroundWorkItem”方法。我注意到有两种类型的重载:QueueBackgroundWorkItem(Action)和QueueBackgroundWorkItem(Func),但老实说,我不理解其中的区别。 如果有人知道这一点,请向我解释一下区别,非常感谢。根据C# QueueBackgroundWorkItem(操作<;取消令牌>;)和QueueBackgroundWorkItem(功能<;取消令牌,任务>;)之间的差异,c#,asp.net,vb.net,fire-and-forget,C#,Asp.net,Vb.net,Fire And Forget,我正在寻找一种在Asp.Net中发送后台电子邮件而不必完全等待的方法,并遇到了“HostingEnvironment.QueueBackgroundWorkItem”方法。我注意到有两种类型的重载:QueueBackgroundWorkItem(Action)和QueueBackgroundWorkItem(Func),但老实说,我不理解其中的区别。 如果有人知道这一点,请向我解释一下区别,非常感谢。根据操作变体: QueueBackgroundWorkItem接受返回回调的任务;当回调返回时,
操作
变体:
QueueBackgroundWorkItem接受返回回调的任务;当回调返回时,工作项将被视为已完成
那句话的第一部分是不正确的。然而,第二个是准确的-当方法返回时,它被认为是完整的。Func
变量:
QueueBackgroundWorkItem接受返回回调的任务;当返回的任务转换到终端状态时,工作项将被视为已完成
现在这一切都是真的。提供一个回调,返回一个<代码>任务<代码>,系统不认为工作完成,直到完成了<代码>任务<代码>。此变体与异步
任务
返回方法配合使用非常好,该方法允许您在方法中使用等待
s
因此,如果您同步完成所有工作,并且在回调返回时完成,则可以使用操作
变量。否则,选择Func
变量