VB6 USANDO DLL CRIADA NO C#

SAMUCATNB 27/10/2014 08:09:46
#442166
bom dia amigos,

estou utilizando os recursos do C# através de uma DLL para implementar no VB6, o problema que me ocorre é o seguinte:
tenho um método que faz download do FTP, porém eu gostaria de que a medida que fosse fazendo o download o Vb6 recebesse o retorno desse progresso pra mim alimentar meu progressbar, no entanto a tela fica travada até que o processo termine. é possível no vb6 algo do tipo multi-tarefas (threads) como poderia fazer isso ?
TUNUSAT 27/10/2014 08:37:46
#442167
SAMUCATNB,

Quer um exemplo de VB6 usando multithreads?
Aqui tem:
MULTITHREADING VB6
http://www.vbmania.com.br/index.php?modulo=detalhe&id=9325

Veja se te ajuda.

Mas acho melhor você tentar antes o [Ô]DoEvents[Ô].
http://support.microsoft.com/kb/118468/pt-br

[][ô]s,
Tunusat.
SAMUCATNB 27/10/2014 10:39:18
#442169
Olá Tunusat, acho que meu grande problema é essa integração com a dll, porque quando passa pelo comando que vai executar o que está na dll, aí ele fica travado até terminar o download, e só após ter concluido ele retorna. e na verdade eu gostaria que enquanto ele estivesse executando a tarefa na dll, de tempo em tempo a dll me retornasse o status.
não sei se tenho que tratar no vb6 isso, ou se tenho que tratar na minha dll feita em C#.
TUNUSAT 27/10/2014 18:27:22
#442175
SAMUCATNB,

Experimente colocar uns [Ô]DoEvents[Ô] no VB6.
Experimente colocar [Ô]multithead[Ô] no VB6 para fazer vários disparos da DLL em C# trabalhando cada thread somente com pedaços do download.

[][ô]s,
Tunusat.
EPISCOPAL 27/10/2014 20:29:27
#442176
não entendo nada de c# mais por acaso existe função para disparar eventos??

RaiseEvent [Ô]Evento[Ô] [ô]no vb6

ai vc coloca no seu sistema qdo a dll disparar o evento ...
SAMUCATNB 28/10/2014 08:14:57
#442181
vou tentar quebrar em partes no C# , mas mesmo assim quando iniciar o download se ele travar dessa forma não conseguiria obter o andamento do download, nem mesmo colocar um progressbar daqueles que fica enganando o o usuario..rsrs,
OCELOT 28/10/2014 08:27:59
#442183
Resposta escolhida
Você provavelmente está usando algum método no C# que faz o download de forma síncrona, travando assim a execução até que o download termine, você provavelmente vai ter que mudar isso para alguma forma assíncrona para não travar.
SAMUCATNB 29/10/2014 08:07:45
#442192
muito interessante Ocelot, você tem uma ideia de como poderia fazer isso ?
OCELOT 29/10/2014 09:55:11
#442196
Não sem saber como você está fazendo o download.

Existem várias formas de se fazer isso em C#, muitas vezes os métodos que efetuam um processo demorado eles disponibilizam um outro método que faz a mesma coisa de forma assíncrona, geralmente se você tem por exemplo um método GetResponse vai ter também um BeginGetResponse e EndGetResponse, sendo o primeiro usado de forma síncrona e os outros dois usados em conjunto para a forma assíncrona.
Tópico encerrado , respostas não são mais permitidas