Когда функция вызывает сервер, файл загружается и сохраняется в папке. Затем файл должен быть обработан, что займет некоторое время и приведет к тайм-ауту клиента.
Чтобы обойти это, я подумал, что, поместив обработку файла в отдельный поток, чтобы подпрограмма могла вернуться к клиенту после загрузки файла. И обработка файла будет продолжаться в фоновом режиме.
К сожалению, поток останавливает возврат. Я не понимаю, с чем у меня проблема. Я думал, что с помощью потока это позволит подпрограмме завершить и вернуться к клиенту.
Public Sub RestoreToOps(rFileInfo As RemoteFileInfo) Implements IRestore.RestoreToOps
Dim oLogItem As New LogItem
Dim sDestinationFolder As String = My.Settings.DestinationFolder
Try
Dim sFileDestination As String = Path.Combine(sDestinationFolder, rFileInfo.FileName)
If File.Exists(sFileDestination) Then
File.Delete(sFileDestination)
End If
Using fs As FileStream = New FileStream(sFileDestination, FileMode.Create, FileAccess.Write, FileShare.Read)
fs.Write(rFileInfo.FileBytes, 0, rFileInfo.FileBytes.Length)
End Using
ProcessFile(rFileInfo.FileName)
Catch ex As Exception
'Error Handling
End Try
End Sub
'*************************************************************************
Private Function ProcessFile(ByVal FileName As String) As Boolean
Dim oThread As Thread = Nothing
Dim oObject As Object = Nothing
Dim oLogItem As New LogItem
Dim sDBName As String = ""
Dim bSuccess As Boolean = False
Try
If InStr(FileName, "Move.zip") > 0 Then
sDBName = Replace(FileName, "Move.zip", "")
oThread = New Thread(New ParameterizedThreadStart(AddressOf MakeRestoreFromObject))
oThread.IsBackground = True
oThread.Start(sDBName)
oThread.Join()
End If
Catch ex As Exception
'Error Handling
End Try
Return bSuccess
End Function
Функция «MakeRestoreFromObject» занимает значительное количество времени, и при использовании вышеприведенного кодирования подпрограмма ожидает завершения функции, прежде чем вернуться .....