У меня есть процесс WCF, который загружает файл на сервер. Как только файл загружен, мне нужно обработать этот файл. Но я не хочу заставлять клиента ждать обработки этого файла.
Я также обеспокоен несколькими запросами одновременно. Я считаю, что каждый запрос порождает новый поток, который облегчает эту проблему. Важное замечание: Имена файлов, загружаемых одновременно, не будут совпадать с именем файла.
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
End Try
End Sub
<MessageContract>
Public Class RemoteFileInfo
<MessageHeader>
Public FileName As String
<MessageBodyMember(Order:=1)>
Public FileBytes() As Byte
End Class
Клиент должен дождаться завершения функции ProcessFile (), прежде чем вернуться к клиенту. Это неприемлемо!
Функция ProcessFile () может занять до 2 минут и дольше, если поступает несколько вызовов.