C#检查是否有正在进行的复印作业

C#检查是否有正在进行的复印作业,c#,copy,detect,explorer,C#,Copy,Detect,Explorer,我正试图找到一种方法,使用C#语言检查是否有任何正在进行的复制作业,因为我需要重新启动explorer.exe进程以刷新应用程序更改的某些设置。因此,我希望避免损坏任何正在进行的复制过程 这里有人有好的建议来解决这个问题吗 提前感谢我在这里有点冒险,但恐怕这不在Windows copy命令(众所周知的有限)的范围内。 但是(可能还有其他类似工具)支持在完成时返回值。 这将允许您轻松地防止(自动)终止explorer.exe进程(尽管手动终止,但这仍然是可能的),只要没有收到返回值 既然您说该副本

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

这里有人有好的建议来解决这个问题吗


提前感谢

我在这里有点冒险,但恐怕这不在Windows copy命令(众所周知的有限)的范围内。
但是(可能还有其他类似工具)支持在完成时返回值。
这将允许您轻松地防止(自动)终止explorer.exe进程(尽管手动终止,但这仍然是可能的),只要没有收到返回值


既然您说该副本不是由您发起的,那么它值得使用,尽管它也有它的缺陷,您需要知道

您可以尝试获取explorer.exe的页面错误增量计数器。看见如果这个数字很高(我知道这不是确切的科学),就会发生一些事情(也许是复制品?)

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


未经验证的想法,但可能值得探索。

@zey这正是OP想要了解的。不是每个问题都以“为什么我写的代码不起作用?”开头。嗨。这是正确的。我没有任何代码。我只是想知道这是否可能,以及如何做到。谢谢。如果您需要重新启动explorer.exe,我建议您询问用户是否可以重新启动explorer.exe,而不只是检查是否正在进行复制/移动作业。人们可以在后台打开很多文件夹,他们可以运行一些设置对话框或控制面板,这些设置对话框或控制面板会被你的应用程序关闭,这是不公平的。最好友好地询问并告知即将发生的事情。好的,我希望这个链接能帮助你:)>嗨,卡尔·约翰·斯切格伦。我同意你的看法。这确实应该是最好的办法。尽管如此,即使用户没有通过安装在客户端上的代理出现,也会引发此应用程序,因此我不希望应用程序在等待某些用户操作时挂起。嗨,Wim。这里的问题是复印工作不是为我提出来的。因此,我想知道的是,在我启动应用程序以推迟重新启动资源管理器进程之前,是否有复制作业正在运行。我相信这是一项艰巨的任务…@user2964193
FileSystemWatcher
可能有一些您可以使用的功能(注意:编辑答案中的限制链接),谢谢您的回复。因此,我的下一个问题是,如果我在启动应用程序时仅在复制作业启动后才实现FileSystemLauncher,那么当复制作业已在进行时,我是否会收到FileSystemWatcher的通知。你知道在那种情况下它是否也会起作用吗?谢谢。我记不住,但值得一试。最糟糕的是,在操作系统级别检查打开的文件句柄会迫使您离开托管代码舒适区,跳入众所周知的深渊。。。恐怕不是我喜欢的,好吧。这将是一项艰巨的任务:)非常感谢你的帮助。我尝试过检查这个方法,但我不能得到一个明确的结论,所以我宁愿使用另一种比这个更精确的方法。无论如何,谢谢你。