错误:多线程客户端服务器应用程序
本文关键字:服务器 应用程序 客户端 多线程 错误 | 更新日期: 2023-09-27 18:30:12
我正在VB.net中开发多线程客户端-服务器应用程序,其中多个客户端连接到一个服务器,服务器端也有打开XML文件并写入一些数据的进程。但1小时后,我得到了以下错误:
"文件被另一个进程使用。"
对于上述问题,你们有什么建议吗。请检查我下面的阅读XML 的代码
Public Function ISRecordExitsinXML(ByVal pFilepath As String, ByVal pClientIP As String, ByVal pMacAddress As String)
Dim xmlDoc As XmlDocument = Nothing
Dim xmlPupilNode As XmlNode = Nothing
Dim xmlAgeNode As XmlNode = Nothing
Try
Dim FileName As String = pFilepath
ISRecordExitsinXML = Nothing
xmlDoc = New XmlDocument
xmlDoc.Load(FileName)
xmlPupilNode = xmlDoc.SelectSingleNode("//RFIDReader[HostIPAddress = '" & pClientIP.Trim & "' and MacAddress = '" & pMacAddress & "' and Status=1] ")
If Not xmlPupilNode Is Nothing Then
xmlAgeNode = xmlPupilNode.SelectSingleNode("RegDateTime")
If Not xmlAgeNode Is Nothing Then
xmlAgeNode.InnerText = DateTime.Now.ToString()
xmlDoc.Save(FileName)
ISRecordExitsinXML = True
End If
Else
ISRecordExitsinXML = False
End If
xmlDoc = Nothing
xmlPupilNode = Nothing
xmlAgeNode = Nothing
Catch ex As Exception
xmlDoc = Nothing
xmlPupilNode = Nothing
xmlAgeNode = Nothing
ISRecordExitsinXML = False
ErrorLog.WriteToErrorLog(ex.Message.ToString(), "HSRV-A9", "ErrorLog.Log")
Finally
xmlDoc = Nothing
xmlPupilNode = Nothing
xmlAgeNode = Nothing
End Try
Return ISRecordExitsinXML
End Function
提前感谢
您的问题(我相信您也知道!)是,当一个进程打开文件时,另一个进程无法打开它。是否有可能使用替代介质来接收数据,例如数据库?然后,您可以一次性将数据从数据库导出到XML文件,从而完全避免冲突。
在写入过程结束后,您可能不会关闭文件,因此其他线程将无法访问该文件