Usuário com melhor resposta
Inserir arquivo no banco e obtendo o progresso da operacão

Pergunta
-
Estou com o seguinte problema em minha aplicação:
Preciso salvar um arquivo no banco de dados e enquanto o arquivo está sendo salvo, quero mostrar o progresso do salvamento. Tentei fazer com Threads, BackgroundWorker mas nada disso tenho conseguido.
Na internet, tenho visto vários exemplos que mostram o backgroundWorker ou Thread mas sempre se utilizam do Timer para realizar a contagem do progressBar.
Tem alguma forma real de eu realizar esse procedimento e saber quantos bytes foram salvos, quantos bytes que restam a serem salvo e em cima disso realizar uma contagem de tempo estimado e/ou uma porcentagem de conclusão ou algo do tipo?
Acredito que muitos já passaram por isso e ainda tem dúvidas então quem puder ajudar serei grato!
Obrigado!
- Editado almeidaspablo sexta-feira, 6 de outubro de 2017 14:00
Respostas
-
Na verdade esta é uma função do banco de dados, não de sua aplicação
se for pra vários registros você pode salvar um a um e a partir daí obter o progresso conforme o bd for te retornando registro salvo.
pra saber do progresso de Querys(consultas), até onde eu sei, bancos de dados destes mais corriqueiros como o MS Sql Server, SQLite e MySql não te dão um feedback de process progress
------------------------------------------ "Existem 10 tipos de pessoas: as que entendem números binários e as que não entendem..."
- Marcado como Resposta Filipe B CastroModerator segunda-feira, 9 de outubro de 2017 13:02
-
Boa tarde almeidaspablo
Como estás querendo saber apenas o progresso de inserção de um único arquivo, complica um pouco, se fosse um lote de arquivos você poderia utilizar a ideia do marcelocamposs.
Minha sugestão seria estipular que para o progresso de salvar o arquivo você atribui ao tempo máximo de timeout da tua aplicação com o banco de dados, e a partir disso, a cada segundo passado, você atribui o progresso, caso o processo de salvar o arquivo conclua bem antes do tempo máximo de timeout, você completa a barra de progresso por inteira e diz que foi salvo com sucesso.
Assim, visualmente daria a sensação ao usuário de que está sendo processado o arquivo.
- Marcado como Resposta Filipe B CastroModerator segunda-feira, 9 de outubro de 2017 13:03
Todas as Respostas
-
Na verdade esta é uma função do banco de dados, não de sua aplicação
se for pra vários registros você pode salvar um a um e a partir daí obter o progresso conforme o bd for te retornando registro salvo.
pra saber do progresso de Querys(consultas), até onde eu sei, bancos de dados destes mais corriqueiros como o MS Sql Server, SQLite e MySql não te dão um feedback de process progress
------------------------------------------ "Existem 10 tipos de pessoas: as que entendem números binários e as que não entendem..."
- Marcado como Resposta Filipe B CastroModerator segunda-feira, 9 de outubro de 2017 13:02
-
Boa tarde almeidaspablo
Como estás querendo saber apenas o progresso de inserção de um único arquivo, complica um pouco, se fosse um lote de arquivos você poderia utilizar a ideia do marcelocamposs.
Minha sugestão seria estipular que para o progresso de salvar o arquivo você atribui ao tempo máximo de timeout da tua aplicação com o banco de dados, e a partir disso, a cada segundo passado, você atribui o progresso, caso o processo de salvar o arquivo conclua bem antes do tempo máximo de timeout, você completa a barra de progresso por inteira e diz que foi salvo com sucesso.
Assim, visualmente daria a sensação ao usuário de que está sendo processado o arquivo.
- Marcado como Resposta Filipe B CastroModerator segunda-feira, 9 de outubro de 2017 13:03
-
Bom dia,
Por falta de retorno essa thread está encerrada.
Se necessário, favor abrir uma nova thread.
Atenciosamente,Filipe B de Castro
Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita
MSDN Community Support
Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.