C# 为什么BackgroundWorker';s WorkerReports进度和工作支持扫描单元';s默认值为false?

C# 为什么BackgroundWorker';s WorkerReports进度和工作支持扫描单元';s默认值为false?,c#,performance,backgroundworker,C#,Performance,Backgroundworker,使用BackgroundWorker的WorkerReportsProgress和WorkerSupportsScanCellation设置为true是否会导致性能损失?是否有其他原因导致它们为错误 true更符合逻辑,因为如果您不想实现它们,就不要实现true不会伤害你 我正在考虑将BackgroundWorkers封装到一个类中(因此我不会忘记将这些属性设置为true,以及其他一些东西)。但是由于默认值是false,这可能表明它们的一些缺点是true我从未注意到任何降级。我经常使用这些,并且

使用
BackgroundWorker
WorkerReportsProgress
WorkerSupportsScanCellation
设置为
true
是否会导致性能损失?是否有其他原因导致它们为
错误

true
更符合逻辑,因为如果您不想实现它们,就不要实现
true
不会伤害你


我正在考虑将
BackgroundWorker
s封装到一个类中(因此我不会忘记将这些属性设置为true,以及其他一些东西)。但是由于默认值是
false
,这可能表明它们的一些缺点是
true

我从未注意到任何降级。我经常使用这些,并且几乎总是将这些值设置为true。如果存在惩罚,那么它必须被它提供的功能所抵消。如果有数据支持相反的情况,我想知道。

根据
BackgroundWorker
的code
WorkerReportsProgress
设置为
false
将阻止用户代码调用
ReportProgress
方法
ReportProgress
方法本身速度相当快,但计算当前呈现可能需要一些时间。因此,我想没有太大的性能差距,但有些滴答声是可以节省的。

似乎它们只是通知呼叫程序它不能呼叫它们。

谢谢。但这并不能回答我的问题。@ispiro好吧,他们是
真的
:)请看问题中倒数第二句:——“我不买”他们忘了,他们永远不会买因为这似乎不合逻辑-我想这是有原因的。@ispiro原因很合乎逻辑-让用户决定应该分配什么值。对于一些用户来说,默认的
false
值是他们想要的,因为他们可能永远不想实现进度或取消支持。因此,他们不能简单地实现它们。让这些值
true
不会影响它们。但是对于那些确实想要实现它们的人来说,
false
是个问题。谢谢。但这并不能回答我的问题。为什么要投反对票?它可能不是OP想要的,但我认为它回答了这个问题,并且它与ie没有太大区别。这是一个necro注释,但我相信在潜在子类的上下文中是正确的。并非所有操作都可以取消,也并非所有操作都有进度报告。例如,子类
SingleFileDeletionWorker
可以(通过
new
)隐藏
workerSupportsScanCellation
属性,并将其只读为
false