スレッドa + b、(両方ともファイルを削除しようとしています)。 aが最初に呼び出され、次にaがまだ実行されている 間にbが呼び出されます。bはファイルを正常に削除しますが、aは削除しません。
を単独で実行すると、 'sファイルは正常に削除されます。
コードをステップスルーすると、 aのMultiAttemptFilenameがbで上書きされていることがわかります。
理解できない。
ファイル名を一緒に渡す汎用ハンドラーを指すajax呼び出しがあります。私のハンドラーには、次のコードがあります。
Dim Dc As New Document
Dim MyThread As New Thread(AddressOf Dc.DeleteFileMulitAttempt)
Dc.MulitAttemptFilename = Filename
MyThread.Start()
私の「Document」クラスから、私は次のように呼んでいます。
#Region "Delete"
Public MulitAttemptFilename As String = ""
Public Sub DeleteFileMulitAttempt()
Dim TimeBetweenAttempts As Integer = 2000
Dim NumberOfAttempts As Integer = 60
Dim AttemptNumber As Integer = 0
Dim Success As Boolean = False
While (AttemptNumber < NumberOfAttempts)
Try
Success = (DeleteFile(MulitAttemptFilename) = "Ok")
Catch ex As Exception
Success = False
End Try
If (Success) Then Exit While
Thread.Sleep(TimeBetweenAttempts)
AttemptNumber += 1
End While
End If
End Sub
...
これは、キャンセルされた/失敗したアップロードを処理するためのものです。アップロードは常にすぐに削除されるとは限らないため(サーバーロックなど)、ループが発生します。
ここで基本的な何かが欠けていますか?