VB.NET怎么在多线程中向txt文件追加一行数据

VB.NET如何在多线程中向txt文件追加一行数据
VB.NET如何在多线程中向txt文件追加一行数据,不管每行写入的顺序,只要能写入即可。我做了很多测试,委托什么的都还是会报文件被占用,比如有900个线程,可能写到10多个就报错了。求大神给关键思路

多线程随机几乎同时写入一个txt文件,就出现了文件被其他线程占用的情况,用了SyncLock 但没效果,请问我应该从哪个方面着手来解决这个问题呢。

在我的大型工程里面,这些线程都是同时开始的,不能一个结束再开始另一个,否则会占用非常长的时间影响效率(写入文件这一块可以等其他线程写完再输出),线程的其他工作都正常,就是输出结果这一块出现问题。

在此先谢谢各位啦!


Imports System.Threading
Public Class frmMain
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Dim t(900) As Thread
        Dim obj As New thClass
        For i As Integer = 0 To 899 Step 1
            t(i) = New Thread(New ThreadStart(AddressOf obj.CheckGame))
            t(i).Name = "记录的行" & vbTab & i
            t(i).IsBackground = True
            t(i).Start()
        Next
    End Sub
End Class

Public Class thClass
    'Delegate Function a(ByVal strMsg As String) As Integer  '声明委托类型 委托可以使一个对象调用另一个对象的方法
    Public Sub CheckGame()
        SyncLock Thread.CurrentThread
            Thread.Sleep(3000)
            Application.DoEvents()
            ''Dim d As New a(AddressOf SaveLog) 
            ''d(Thread.CurrentThread.Name)    '执行委托
            SaveLog(Thread.CurrentThread.Name)
        End SyncLock 
    End Sub
    Private Sub SaveLog(ByVal strMsg As String)
        If strMsg.Length = 0 Then Exit Sub
        My.Computer.FileSystem.WriteAllText(Application.StartupPath & "\日志记录.txt", Now & "," & strMsg & vbCrLf, True)
        Application.DoEvents()
    End Sub
End Class

------解决方案--------------------
搞一个全局的mutex比如dim m as new system.threading.mutex

然后到要写入的地方
 mutex.waitone
写入的代码
mutex.releasemutex
------解决方案--------------------
好像不是锁定的问题...不好意思我胡扯了,还是等大神来吧
------解决方案--------------------
或者你可以考虑搞一个线程专门处理写入,弄一个写入的队列,这个线程不断从这个队列里拿数据写入,其他的900个线程同时往这个队列里加数据

可能是写文件操作来不及释放吧
------解决方案--------------------
不及释放,就应该考虑 排队,队列写入,或者线程池。
多个线程同时写入一个文件。肯定要排队。
或者做缓存,等系统有空再写入。