传递参数¶

您可以将其他数据作为常规方法参数传递到后台任务。我再次使用下面的例子(希望没有让你厌恶):


  1. BackgroundJob.Enqueue(() => Console.WriteLine("Hello, {0}!", "world"));


在常规方法调用中,在执行后台作业期间, Console.WriteLine 方法将使用这些参数。为了参数传递进去,需要先序列化。


使用 了不起的 Newtonsoft.Json 软件包来序列参数成JSON字符串 (自 1.1.0 版本后)。所以你可以使用几乎任何类型作为参数; 包括数组,集合和自定义对象。详细内容,请参阅 相应的文档



参数不支持引用传递


你不能有引用传递的参数 – refout 关键字 不被支持.



由于参数是序列化的,谨慎考虑参数的值避免让你的存储膨胀。大多数情况下,更有效的方式是在应用程序的数据库中使用具体的标识符(id)并将其传递到后台任务。


请记住,后台作业可能在入队后的几天或几周内进行处理。如果您使用参数中可能会变化的数据,则可能会变得过时– 数据库记录可能会被删除,文章的文本可能会被更改等。 因此需要根据你的任务设计好参数。

原文:

http://hangfirezh.zhs.press/background-methods/passing-arguments.html[TOC]