porem não quero que ele seja lento pois isso sera para + de 1000 wavs/dia
então resolvi criar 5 threads para resolver esse problema de "velocidade"
vou mostrar exemplo de 2 pois 5 o tópico iria ficar muito grande >>
trd1 = New Thread(AddressOf conversao1)
trd2 = New Thread(AddressOf conversao2)
trd1.Start()
trd2.Start()
'--------------------------------------------------
Public Sub conversao1()
Dim arqwav1, arqmp31 As String
Dim a As Integer
For a = 0 To List1.Items.Count / 5
arqwav1 = lista1(a)
arqmp31 = Dir1.Path & "\" & strFileNames(a + 1) & ".mp3"
If Convert1(arqwav1, arqmp31) = True Then
'L_1.Text = a + 1 & "/" & List1.Items.Count / 5 & " Concluidos"
'L_1.Refresh()
End If
Next a
End Sub
'----------------------------------------------------------------
Private Function Convert1(ByVal arqwave As String, ByVal arqmp3 As String) As Boolean
On Error GoTo err_convert
Dim BufferSize As Integer
Dim Wav() As Short
Dim CurrentSamples As Integer
FileR.OpenFile(arqwave)
If FileR.LastErrorNum < 0 Then GoTo P
FileW.CreateFile(arqmp3)
If FileW.LastErrorNum < 0 Then GoTo P
FileW.SetFormatArray(FileR.ArrayFrequency, FileR.ArrayChannels)
BufferSize = FileR.ArrayChannels * FileR.ArrayFrequency
CurrentSamples = 0
Do While True
Wav = FileR.ReadFile(BufferSize)
If UBound(Wav) + 1 = 0 Then
Exit Do
End If
FileW.WriteFile(Wav)
CurrentSamples = CurrentSamples + (UBound(Wav) + 1) / FileR.nChannels
If CurrentSamples > FileR.nSamples Then
CurrentSamples = FileR.nSamples
End If
System.Windows.Forms.Application.DoEvents()
Loop
FileW.CloseFile()
FileR.CloseFile()
Convert1 = True
Exit Function
P:
FileR.CloseFile()
FileW.CloseFile()
Me.Cursor = System.Windows.Forms.Cursors.Default
Convert1 = False
Exit Function
err_convert:
MsgBox("Convert1 :" & Err.Description)
MsgBox("Aconteceram erros na conversão entre em contato com o suporte", MsgBoxStyle.Critical, "Contate o suporte")
Convert1 = False
End
End Function
-------------------------------------------------------------------------------------------------------------------------------------------------------------
ou seja tem 1 thread q tem 1 conversao q tem 1 funcao convert por ex:
Thread1 -> conversao1 -> convert1
Thread2 -> conversao2 -> convert2
porem se tento executar as 2 de uma vez acontece o seguinte erro:
Convert1: O servidor emitiu uma exceção. (exception from HRRESULT: 0x80010105 (RPC_E_SERVERFAULT))
já testei as 2 threads sozinhas e funcionam, so quando coloco as duas para rodar ao mesmo tempo que da esse problema.. alguém tem alguma ideia?
Pergunta
Moonfall
Seguinte galera.. estou com 1 grande problema..
estou fazendo 1 conversor de WAV para MP3.
porem não quero que ele seja lento pois isso sera para + de 1000 wavs/dia
então resolvi criar 5 threads para resolver esse problema de "velocidade"
vou mostrar exemplo de 2 pois 5 o tópico iria ficar muito grande >>
ou seja tem 1 thread q tem 1 conversao q tem 1 funcao convert por ex:
Thread1 -> conversao1 -> convert1
Thread2 -> conversao2 -> convert2
porem se tento executar as 2 de uma vez acontece o seguinte erro:
Convert1: O servidor emitiu uma exceção. (exception from HRRESULT: 0x80010105 (RPC_E_SERVERFAULT))
já testei as 2 threads sozinhas e funcionam, so quando coloco as duas para rodar ao mesmo tempo que da esse problema.. alguém tem alguma ideia?
Link para o comentário
Compartilhar em outros sites
0 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.