【发布时间】:2011-11-04 11:11:23
【问题描述】:
我必须在我的AV中添加一个进度条,问题是我事先不知道要扫描多少个文件。所以我不知道总数。如果我计算要扫描的文件,然后软暂停一段时间,因为它必须遍历许多文件,并且在完全系统扫描的情况下,如果不需要长时间,则此暂停。因此我删除了该代码。我听说 avast 动态更改进度条值,即如果该值接近 100 并且找到更多要扫描的文件,则它将值推送到 50。编码是在 C# 中。
【问题讨论】:
-
您正在制作自己的杀毒软件,却不知道如何获取系统上的文件数?更令人沮丧的是你试图在 C# 中做到这一点。如果扫描系统导致暂停,则意味着您的扫描线程阻塞了 ui 线程,您应该在担心进度条之前解决这个问题。
-
为什么不使用两个线程,一个用于 AV,一个用于查找要扫描的文件数量,这将增加进度条的最大值。您无法确定文件的数量,因为用户可能会在扫描过程中创建/删除文件。
-
@Ramhound-你没有明白我在说什么..我知道如何获取文件总数,我正在递归地做,但是当我在递归循环中计算它们时,由于数千个文件,由于那个计数循环,我遇到了暂停。之后扫描没有问题。扫描很好 -
-
@AndyChora - 如果递归循环导致暂停,那么它不是线程安全的。我仍然觉得你试图在你的技能水平上制作一些像反病毒程序一样先进的东西很奇怪。如果您使用递归函数来计算文件,那么您做错了。(至少在我看来。)
标签: c# progress-bar antivirus