Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在VB.NET中为XmlDataProvider编写锁定XML文件_Xml_Vb.net_File Locking_Xmldataprovider - Fatal编程技术网

如何在VB.NET中为XmlDataProvider编写锁定XML文件

如何在VB.NET中为XmlDataProvider编写锁定XML文件,xml,vb.net,file-locking,xmldataprovider,Xml,Vb.net,File Locking,Xmldataprovider,我试图在程序中打开一个XML文件时锁定该文件以进行写访问。我的程序使用XmlDataProvider。我找不到同时实现这两个目标的方法: 部分类主窗口 'XmlData作为XmlDataProvider-在MainWindow.xaml中声明 私有m_文件名为字符串=无 私有m_文件号为整数 公共子OpenFile(文件名为字符串) 如果m_FileName不是空的,那么CloseFile() m_FileName=文件名 m_FileNumber=FreeFile FileOpen(m_文件号

我试图在程序中打开一个XML文件时锁定该文件以进行写访问。我的程序使用
XmlDataProvider
。我找不到同时实现这两个目标的方法:

部分类主窗口
'XmlData作为XmlDataProvider-在MainWindow.xaml中声明
私有m_文件名为字符串=无
私有m_文件号为整数
公共子OpenFile(文件名为字符串)
如果m_FileName不是空的,那么CloseFile()
m_FileName=文件名
m_FileNumber=FreeFile
FileOpen(m_文件号、m_文件名、OpenMode.Binary、OpenAccess.Default、OpenShare.LockWrite)
XmlData.Source=新Uri(m_文件名)
'IOException:进程无法访问文件“C:\path\filename.xml”,因为它已被其他进程使用。
“我翻译了错误信息,希望您知道我指的是哪一条。
端接头
公共子文件()
如果m_FileName为Nothing,则退出Sub
XmlData.Source=Nothing
文件关闭(m_文件编号)
m_FileName=无
端接头
末级

我也找不到方法告诉
XmlDataProvider
为我锁定文件。我能做什么?

我想说(现在)你把自己锁在外面了。您能告诉我
XmlData
的定义吗?@Styxxy XmlData是MainWindow.xaml中声明的XmlDataProvider(如上代码中的注释)。在XAML中,即
节点中的
(“default.xml”内容只是xml声明和
)。隐藏的代码分配了一个新的源代码,其余的部分由绑定来可视化和编辑文件内容。我假设
XmlDataProvider
无法加载锁定的文件(尽管我不太明白为什么它说“被另一个进程锁定”;它可能是另一个线程-但应该是同一个进程,不是吗?)。我不能交换这些语句,因为在锁定XML文件之前,我会先处理它,这意味着在处理XML文件时它可能会被使用。另一方面,我找不到将锁定的文件传递给
XmlDataProvider
的方法,也不知道如何告诉提供程序在文件用作源时自动锁定文件。