【问题标题】:Error :MultiThreaded client-server application [duplicate]错误:多线程客户端-服务器应用程序 [重复]
【发布时间】:2013-09-04 11:53:24
【问题描述】:

我正在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

提前致谢

【问题讨论】:

标签: c# vb.net sockets


【解决方案1】:

您的问题(我相信您知道!)是当文件被一个进程打开时,它不能被另一个进程打开。 是否有可能使用替代媒介来接收数据,例如数据库?然后,您可以一键将数据从数据库导出到 XML 文件,从而完全避免冲突。

【讨论】:

  • 感谢您的回复,但我必须使用 XML 文件,这是要求。
  • 好的,没有问题。是否可以实现等待功能 - 如果文件正在使用中,则暂停一两秒,以便有时间写入并关闭并重试?
【解决方案2】:

写入过程结束后你可能没有关闭文件,因此其他线程将无法访问它

【讨论】:

  • 感谢重播,我有 2 个 Windows 客户端服务,它在 2 个不同的桌面上运行,服务器在 WAN 上也有 Windows 服务,所以每隔 30 秒我的客户端服务连接到服务器和更新 XML 文件,直到 1 小时它工作正常,但之后我得到了错误。
猜你喜欢
  • 1970-01-01
  • 2015-09-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-21
  • 2011-04-28
  • 1970-01-01
相关资源
最近更新 更多