C#: How to check if a open file has been updated

情到浓时终转凉″ 提交于 2019-12-12 15:06:32

问题


You know the feature for example, you opened C:\test.txt if you also have the same file in another editor, and you edit it there, when you return, the app will prompt that the file has changed, whether you want to update it. How do I check if the file has been updated?

UPDATE

Asked a sister question "Using FileSystemWatcher to watch for changes to files"


回答1:


You could use a FileSystemWatcher to get notifications from the file system.




回答2:


Either use FileSystemWatcher (preferred) or compare the last modified date periodically.




回答3:


You can either use a FileSystemWatcher, or you can poll for changes at opportune moments.

Note that the FileSystemWatcher may miss changes if under heavy load and is IDisposable. Failure to dispose it properly can cause stability issues (which I've had happen, personally). If you opt for polling, note that FileInfo caches some metadata so you'll need to call the FileInfo.Refresh method if you reuse FileInfo objects. Alternatively, use the File API.

For only a few files, polling is easier and safer to get right since it avoids the OS callback issues of FileSystemWatcher and never misses any events. For large number of files, the FileSystemWatcher is a must to achieve reasonable performance.



来源:https://stackoverflow.com/questions/3967118/c-how-to-check-if-a-open-file-has-been-updated

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!