刷新我的应用程序时,我必须从其中存储信息的文本文件中读取。阅读后,我确保下次刷新应用程序时已将其关闭'file.close()',应再次生成文本文件并覆盖前一个文件。
问题是它无法更改文件,因为它已被另一个进程使用,但只要我关闭我的应用程序,它就可以正常工作。无论如何在刷新它之前停止该过程以使其正常工作?该文本文件称为 NetworkInfo.txt。
谢谢克里斯
编辑
每次刷新应用程序时,我都会运行一个批处理文件,该文件会生成一个包含所有网络信息的文件。(IPConfig/all)
然后我有一个从它读取的模块,如下所示:
Public Function EthDefaultGateway() As String
Dim sr As New System.IO.StreamReader(ipconfig)
Try
Dim foundEthernet As Boolean = False
Dim gateway As String = ""
Do Until sr.EndOfStream
Dim line As String = sr.ReadLine()
If line.Contains("Ethernet adapter LAN:") OrElse line.Contains("Ethernet adapter Local Area Connection:") Then
foundEthernet = True
End If
If foundEthernet Then
If line.Contains("Default Gateway . . . . . . . . . :") Then
gateway = line.Substring(line.IndexOf(":") + 1).Trim
Exit Do
End If
End If
Loop
If gateway = "" Then
gateway = "Unknown"
End If
If gateway = "::" Then
gateway = "Unknown"
End If
Return gateway
Catch ex As Exception
EthDefaultGateway = "Unknown"
End Try
sr.Close()
sr.Dispose()
End Function
从这里我收集了我需要的所有信息。(有很多更好的方法可以做到这一点,但我只是个菜鸟,我在这里、网上或朋友那里找不到任何其他想法。)
所有这些都在从中读取文件后关闭文件(sr.close)
一些原因,虽然它没有关闭它。唯一的另一件事可能是批处理文件没有关闭它,我认为这不太可能
问题是,当我更改 IP 或刷新表单时,它会失败,因为批处理文件无法覆盖网络信息文件。
有什么建议么?
我只是在想一种在刷新后终止进程的方法,但我不知道这是否是个好主意,或者它是否可行或如何做到这一点。