我编写了一个程序,它从文件中读取数据,根据给定的参数对其进行处理并写入一些输出。我很好奇,当用户创建我的程序的更多实例(通过打开可执行文件)并在同一个文件上运行它们时,是否会出现任何奇怪的问题。
我使用 while 循环和 file.ReadLine()
从文件中读取。
最佳答案
I was curious, if there can occur any strange problems when user creates more instances of my program (by opening executable file) and runs them over the same file.
这种措辞方式让我认为您担心用户可能会意外地针对同一个文件运行该程序的多个实例。如果这是您的顾虑,那么您可以通过以独占模式打开文件来防止出现问题。只要文件处于打开状态,操作系统本身将确保只有程序的单个实例可以访问该文件。
如果您使用 FileStream 对象访问文件,那么我相信独占模式是默认模式,因此您根本不必担心这一点。只需确保您的流在所有需要一致性的读取和写入过程中保持打开状态即可。
如果程序的另一个实例试图打开文件,那么它将抛出 IOException 并且不允许访问。您可以让程序崩溃,也可以通知用户该文件已被使用,并让他们选择另一个文件或其他任何选项。
更新
如果你想在程序的多个实例中读取同一个文件,而没有实例写入它,那么这也很容易做到。只需以共享只读模式打开文件,让多个程序同时读取文件完全没有问题。
using (Stream stream = new FileStream(filePath, FileMode.Open,
FileAccess.Read, FileShare.Read))
关于C# 从同一个文件中读取程序的多个实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7838784/