如果您的网站不需要写回加载的XML文档,我将通过
FileStream
那有
FileShare.ReadWrite
集合。这应该允许另一个线程中的XML编写器写入该文件。
如果这不起作用,您还可以尝试将XML从文件流读取到memorystream中,并尽快关闭该文件。我仍然会用fileshare.readwrite打开文件,但这会将您的读卡器访问文件中数据所需的时间最小化。
通过使用
文件共享.readwrite
(或)
FileShare.Write
对于这一点),作为共享模式,在您仍在阅读文档时,您将面临更新文档的风险。这可能会导致XML内容无效,从而阻止XmlDocument.Load调用成功分析它。如果希望避免这种情况,可以尝试与临时“锁定文件”同步。您不允许文件共享,而是阻止任一线程同时访问,并且当其中一个线程正在处理该文件时,将一个空的临时文件写入磁盘,以表明这一点。处理(读或写)完成后,删除临时文件。这可以防止在任何一端引发异常,并允许您同步对文件的访问。
还有一些其他的选择,你也可以使用。您可以简单地让两端接受任何异常,并在再次尝试之前等待一小段时间,尽管这不是真正的最佳设计。如果您足够了解.NET的线程选项,那么也可以使用命名系统
Mutex
这两个过程(你的写作过程和你的网站过程)都知道。然后您可以使用互斥锁来锁定,而不必为锁定文件而烦恼。