我的情况是,我有以下方法,它使用SyncLock来确保一次一个线程写入文件。
Private Shared lockThis As New Object
Public Sub Process()
SyncLock lockThis
File.AppendAllText("c:\jamo\foo.txt","foo")
End SyncLock
End Sub 我使用了许多同时运行的线程:
Public Sub CreateThreads()
Dim trd as Thread
Dim X as Integer = 10
For i as integer = 1 to X
trd = New Thread(AddressOf Process)
trd.Start()
Next Sub
End Sub我的问题是当X很大(如500)时,一个或多个线程同时写入文件。为什么会发生这种情况?
发布于 2012-12-01 14:56:27
我没有证据,但它可能说的是真的。如果任何其他进程在没有共享文件的情况下打开它,有500个或更多的线程试图打开它,那么该文件很可能会被其中一个进程锁定。
https://stackoverflow.com/questions/13004643
复制相似问题