Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/256.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# QueueBackgroundWorkItem(操作<;取消令牌>;)和QueueBackgroundWorkItem(功能<;取消令牌,任务>;)之间的差异_C#_Asp.net_Vb.net_Fire And Forget - Fatal编程技术网

C# QueueBackgroundWorkItem(操作<;取消令牌>;)和QueueBackgroundWorkItem(功能<;取消令牌,任务>;)之间的差异

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接受返回回调的任务;当回调返回时,

我正在寻找一种在Asp.Net中发送后台电子邮件而不必完全等待的方法,并遇到了“HostingEnvironment.QueueBackgroundWorkItem”方法。我注意到有两种类型的重载:QueueBackgroundWorkItem(Action)和QueueBackgroundWorkItem(Func),但老实说,我不理解其中的区别。 如果有人知道这一点,请向我解释一下区别,非常感谢。

根据
操作
变体:

QueueBackgroundWorkItem接受返回回调的任务;当回调返回时,工作项将被视为已完成

那句话的第一部分是不正确的。然而,第二个是准确的-当方法返回时,它被认为是完整的。
Func
变量:

QueueBackgroundWorkItem接受返回回调的任务;当返回的任务转换到终端状态时,工作项将被视为已完成

现在这一切都是真的。提供一个回调,返回一个<代码>任务<代码>,系统不认为工作完成,直到完成了<代码>任务<代码>。此变体与
异步
任务
返回方法配合使用非常好,该方法允许您在方法中使用
等待
s

因此,如果您同步完成所有工作,并且在回调返回时完成,则可以使用
操作
变量。否则,选择
Func
变量