gpt4 book ai didi

vb.net - 如何使用文件流/流写入器处理并发文件访问?

转载 作者:行者123 更新时间:2023-12-02 03:09:35 24 4
gpt4 key购买 nike

我正在编写一个审核文件,该文件在每个用户使用我的应用程序时写入用户名、时间以及应用程序中多个变量的旧/更改值。它使用 FileStreamStreamWriter 来访问审核文件。每个用户的所有审核都将写入同一文件。

问题是,当两个用户同时更新此审核文件时,每个变量的“旧值”在用户之间会混合。这是为什么?如何解决这里的并发问题?

为了简洁起见,缩短了一些代码...

Dim fs As FileStream
Dim w As StreamWriter

Public Sub WriteAudit(ByVal filename As String, ByVal username As String, ByVal oldAddress As String, ByVal newAddress As String, ByVal oldCity As String, ByVal newCity As String)
Dim now As DateTime = DateTime.Now
Dim audit As String = ""
audit += now + "," + username + "," + oldAddress + "," + newAddress + "," + oldCity + "," + newCity

fs = New FileStream(filename, FileMode.Append)
w = New StreamWriter(fs)
w.WriteLine(audit)
w.Close()
fs.Close()
End Sub

它位于 AuditLogger 类中,该类通过实例变量引用(每次访问该函数时都会重新分配)。

最佳答案

你可以尝试这个:

TextWriter tw = TextWriter.Synchronized(File.AppendText(filePath));

File.AppendText() 方法返回一个 StreamWriter 对象,TextWriter.Synchronized() 方法包装该对象以创建一个线程安全的 TextWriter,可以像 StreamWriter 一样使用它。

关于vb.net - 如何使用文件流/流写入器处理并发文件访问?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1882637/

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