我正在开发一个处理图像文件的程序。现在遇到的问题是一些图片非常大,我不知道复制过程何时结束。目前代码是使用C#编写,并使用FileSystemWatcher类监视文件。唯一的问题是没有事件可用来判断其他进程是否完成对该文件的处理。
目前的逻辑是监视创建和更改事件,然后等待5秒钟,以期望在此时间点之前复制过程已经完成。虽然这在我的开发机器上有效,但客户报告整个过程存在问题。
多年前,当我编写此代码时,我确实看到在较低层次上(我认为是DDK SDK的一部分),可以了解有关另一个程序如何访问文件的更多信息。
有人能否就此发表意见并指导我方向?我希望它是C++代码,而不是C#代码。
回答以下一些问题:
问题在于其他进程将图像复制到我程序监视的目录中。一旦图像完全复制,我的程序需要尽快开始处理图像。问题在于很多图片,有时候是数百张图片,会同时复制。由于每张图片都需要尽快处理,因此系统需要尽快知道图像已完全复制并可以进行处理。
我完全清楚通过WinSDK无法实现我想做的事情,但我99.9%肯定通过WinDDK是可能的,也许我名称有误,我谷歌搜索得到的是“Windows Driver Kit (WDK)”。我相信SysInternals实现所有酷炫功能的方式就是使用WDK级别的函数。
目前的逻辑是监视创建和更改事件,然后等待5秒钟,以期望在此时间点之前复制过程已经完成。虽然这在我的开发机器上有效,但客户报告整个过程存在问题。
多年前,当我编写此代码时,我确实看到在较低层次上(我认为是DDK SDK的一部分),可以了解有关另一个程序如何访问文件的更多信息。
有人能否就此发表意见并指导我方向?我希望它是C++代码,而不是C#代码。
回答以下一些问题:
问题在于其他进程将图像复制到我程序监视的目录中。一旦图像完全复制,我的程序需要尽快开始处理图像。问题在于很多图片,有时候是数百张图片,会同时复制。由于每张图片都需要尽快处理,因此系统需要尽快知道图像已完全复制并可以进行处理。
我完全清楚通过WinSDK无法实现我想做的事情,但我99.9%肯定通过WinDDK是可能的,也许我名称有误,我谷歌搜索得到的是“Windows Driver Kit (WDK)”。我相信SysInternals实现所有酷炫功能的方式就是使用WDK级别的函数。
fclose()
的调用。但是如果这是你自己的进程,那么有什么阻止你将文件完成事件输出到stdout呢? - user4442671