VB.NET中,如何实现FileStreamStreamWriter的线程安全文件并发操作?

2026-05-06 12:211阅读0评论SEO资讯
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计372个文字,预计阅读时间需要2分钟。

VB.NET中,如何实现FileStream/StreamWriter的线程安全文件并发操作?

我正在编写一个审计文件,该文件记录每个用户使用我的应用程序时,应用程序中几个变量的用户名、时间和旧/新值。它使用FileStream和StreamWriter来访问审计文件。每个用户的记录包括:

VB.NET中,如何实现FileStream/StreamWriter的线程安全文件并发操作?

我正在编写一个审计文件,该文件在每个用户使用我的应用程序时为应用程序编写应用程序中的几个变量的用户名,时间和旧/更改值.它使用FileStream和StreamWriter来访问审计文件.每个用户的所有审核都将写入同一文件.

问题是,当两个用户同时更新此审计文件时,每个变量的“旧值”在用户之间混淆.为什么这样,你怎么解决这里的并发问题?

一些代码,为简洁而缩短……

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一样使用.

本文共计372个文字,预计阅读时间需要2分钟。

VB.NET中,如何实现FileStream/StreamWriter的线程安全文件并发操作?

我正在编写一个审计文件,该文件记录每个用户使用我的应用程序时,应用程序中几个变量的用户名、时间和旧/新值。它使用FileStream和StreamWriter来访问审计文件。每个用户的记录包括:

VB.NET中,如何实现FileStream/StreamWriter的线程安全文件并发操作?

我正在编写一个审计文件,该文件在每个用户使用我的应用程序时为应用程序编写应用程序中的几个变量的用户名,时间和旧/更改值.它使用FileStream和StreamWriter来访问审计文件.每个用户的所有审核都将写入同一文件.

问题是,当两个用户同时更新此审计文件时,每个变量的“旧值”在用户之间混淆.为什么这样,你怎么解决这里的并发问题?

一些代码,为简洁而缩短……

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一样使用.