3

我正在尝试寻找一种方法来检查是否有任何使用 C# 语言进行的复制作业,因为我需要重新启动 explorer.exe 进程以刷新我的应用程序更改的一些设置。所以我想避免破坏正在进行的任何复制过程。

这里有人有一个很好的提示来解决这个问题吗?

提前致谢

4

2 回答 2

1

我要在这里冒险,但是afaik这不在Windows复制命令的(臭名昭著的有限)可能性范围内。
然而, RoboCopy(可能还有其他类似的工具)支持在完成时返回值。
只要未收到返回值,这将允许您轻松阻止(自动)终止 explorer.exe 进程(尽管手动终止,当然这仍然可能)。

由于您说副本不是由您发起的,因此值得使用FileSystemWatcher,尽管您也需要注意它的局限性

于 2013-11-07T10:17:55.300 回答
1

您可以尝试获取 explorer.exe 的页面错误增量计数器。请参阅此链接。如果这个数字很高(我知道不是精确的科学),就会发生一些事情(也许是副本?)。

这不会给你一个明确的答案,而是一个提示。尽管页面错误很少甚至为零,但复制可能仍在进行中 - 例如,当复制向用户显示提示、等待网络等时。您可以监视该过程几秒钟,如果页面错误很低,请询问用户是否可以重新启动该过程。

未经测试的想法,但可能值得探索。

于 2013-11-07T10:34:27.827 回答