有一个组件-A从某些源下载内容并将其写入文件。 另一个组件-B需要等待组件-A的下载+写操作才能完成。
文件大小在组件B之前是已知的。
条件: 组件A无法通知它已完成写操作。
组件B必须以某种方式识别文件已经增长到预期的大小并开始阅读它。
最好的方法是什么?琐碎的方法是在一段时间后检查大小。
有没有办法等待文件句柄,直到它增长到预期的大小?
答案 0 :(得分:1)
不,你不能以这种方式等待文件句柄。仅当您使用异步操作时,等待文件句柄才有意义(只要任何此类操作完成,句柄就会发出信号),并且无论如何都不建议这样做。
一个可用的选项是调用ReadDirectoryChangesW
,但它有自己的一组陷阱(它的工作方式是文件名,而不是句柄;文件名可能很长或很短,不保证;你必须使用更复杂的异步工作流,因为同步提供的东西没有你现有的更好。
总而言之,如果您的要求是不可侵犯的,那么使用计时器听起来并不糟糕,它肯定会使代码更简单。