gpt4 book ai didi

windows - Vb.net 读取文件后不关闭文件

转载 作者:可可西里 更新时间:2023-11-01 14:51:45 26 4
gpt4 key购买 nike

当刷新我的应用程序时,我必须从一个存储有信息的文本文件中读取。读取后,我确保在下次刷新应用程序时关闭它“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

从这里我收集了我需要的所有信息。 (可能有很多更好的方法来做到这一点,但我只是一个菜鸟,我无法在这里、网络或 friend 那里找到任何其他想法。)

所有这些在从文件中读取后关闭文件(sr.close)

某些原因虽然它没有关闭它。唯一的另一件事可能是批处理文件没有关闭它,我认为这不太可能

问题是当我更改 IP 或刷新表单时失败,因为批处理文件无法覆盖网络信息文件。

有什么建议吗?

我只是在想一种在刷新后终止进程的方法,但我不知道这是否是个好主意,或者它是否可行,或者如何做到这一点。

最佳答案

    Return gateway

这绕过了底部的 sr.Close() 调用。所以文件不会被关闭。总是喜欢使用 Using 语句,这样它是自动的,不会因为异常而被遗忘、跳过或绕过:

Public Function EthDefaultGateway() As String
Using sr As New System.IO.StreamReader(ipconfig)
'' Rest of your code
End Using
End Function

关于windows - Vb.net 读取文件后不关闭文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11978345/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com