【发布时间】:2019-12-26 07:36:30
【问题描述】:
假设有两个任务:
Task.Run(() => {
while (!this.isCanceled)
DoOperation(obj);
});
和
Task.Run(() => {
foreach(var obj in objects) // Another objects' subset
while(!this.isCancelled)
DoOperation(obj);
});
和DoOperation(Foo obj) 实现:
DoOperation(Foo obj)
{
if (obj.IsBar && obj.IsFoo)
obj.MakeSad();
else
obj.MakeHappy();
}
我们可以锁定方法DoOperation,一切都应该很好,但是这种方法有一些性能负面的方面。此外,使用DoOperation 方法可以一次处理大量任务。
第二种方法是将整个方法复制到每个任务中。但情况更糟。
那么问题是如何避免锁定并防止代码重复?
【问题讨论】:
标签: c# task code-duplication