1

假设我有一个对象,我想在两个单独的任务中使用它的成员。最好的方法是什么?由于结构按值传递,我是否应该将对象更改为结构,然后创建对象的两个单独副本,并将其传递给两个任务?此外,由于对象的属性来自数据库,我想我可以在每个任务中创建实例。

哪种方法最有效?

4

2 回答 2

3

正如 Henk 在对 OP 的评论中所暗示的那样……

如果对象的属性仅用于参考,则实例化一次对象并将其传递给多个任务是没有问题的,但是,如果任务要更改对象的属性,则需要处理所有常见的多线程问题。

此外,由于您提到这些对象代表 Db 记录,我猜您是从 ORM 中获取它们的。如果您使用实体框架,它创建的代理类在更改属性时绝对不是线程安全的。

所以真的,这取决于你的使用情况比赛条件。(假设您没有处理大量实体并且内存使用不是问题)

于 2012-10-20T15:37:14.120 回答
0

如果对象在任务之间是独立的,它应该是按值的。如果一个对象被两个任务使用,则应该有一个对象。如果对象是独立的(换句话说,2 个对象),则克隆对象,然后传递给任务。我不会使用结构。

于 2012-10-20T16:43:54.277 回答