AJUDA COM ERRO BACKGROUND WORK
Citação::
Deixa ver se eu entendi: Você está usando o WebBrowser ou um client HTTP qualquer para baixar um HTML que é na verdade um WebService. Se for isso, amigo, tenho péssimas notÃcias pra você...
Não vou explicar novamente é que ficou confuso mesmo nem eu entendi kkkk...
Tenho esta tela aonde tenho os pacientes com 2 tipos de status aguardando e agendado como na figura 1, ao clicar em imprimir agendamento, ele vai na pasta do .exe na pasta comprovante, la dentro criei uma pagina simples em html da forma que mostra na figura 3. Somente isso, fiz isso pois estava usando o word para criar o mesmo tipo de comprovante mais seguindo seu conselho vi que não poderia me prender ao office. Agora não sei se fiz da forma correta.
[txt-color=#e80000]FIGURA 1[/txt-color]
[txt-color=#e80000]FIGURA 2 AQUI AONDE ESTA EM BRANCO DEVERIA CARREGAR O ARQUIVO HTML PREENCHIDO.[/txt-color]
[txt-color=#e80000]FIGURA 3[/txt-color]
Citação::
Ocelot não sei se esta correto usar o background work pra isto, exemplo tenho o meu webservice aonde faco todas as funções de um crud funciona perfeitamente da forma que precisava, comecei a usar o backgroundwork para exibir o que estava acontecendo e não deixando o sistema travado na hora da busca exemplo. quando estou listando os pacientes que estão aguardando agendamento faco todo o procedimento pelo background work. só não consigo entender o por que deste erro somente nesta tela, que nem background work tem kkkk, nesta tela simplesmente pego uma html que fiz e salvei na pasta do projeto e preencho exemplo com os dados que vem do form funcionava perfeitamente após eu adicionar esses background work que fica em outras telas esta apresentando isso.
Não importa que a tela tenha background worker, o que importa é a thread que está tentando manipular esta tela. Se você tenta exibir a tela de dentro do evento DoWork ela vai ser executada da Thread do BackgroundWorker e por isso o erro. Só que como se trata de Threads pode ser que as vezes funcione pode ser que as vezes não, e não tem como saber o porque exatamente pois ele não foi feito para ser usado por várias Threads e o uso dele assim tem comportamento indefinido, então as vezes funcionar e as vezes não é meio que o comportamento esperado, e funcionar em testes não significa que sempre vai funcionar, pode dar erro em um cliente especifico seu e você nunca encontrar o motivo.
Basicamente você pode usar as threads para chamar o webservice e fazer todas as operações que precisar, porém não deve em momento algum modificar ou exibir telas, de preferência não deve nem mesmo pegar dados das telas pois alguns controles vão ter problemas com isso, você deveria ter tudo separado antes de iniciar o background worker.
Se enquanto ele está rodando você precisa avisar o que está fazendo modificando a tela você pode fazer isso de duas formas, usar o ReportProgress do BackgroundWorker ou usar o método Invoke do Form, mas deve ser feito o mÃnimo possÃvel por ser um processo um pouco lento.
Agora se o problema é só o WebService travando a execução por demorar um pouco para responder você deveria procurar como fazer as chamadas de forma assÃncrona, pois assim a chamada ao WebService não trava o programa e não precisa de Threads.
exemplo do meu login...De teste...não sei se estou fazendo da forma correta..
Dim servico As New THGService.Service
Dim Dados As New THGService.DadosUsuario()
servico.EfetuarLogin(txtusuario.Text, txtsenha.Text)
Dados = servico.EfetuarLogin(txtusuario.Text, txtsenha.Text)
If Dados.encontrouuser = True Then
msgbox([Ô]ENCONTRADO[Ô])
else
msgbox([Ô]NÃO ENCONTRADO[Ô])
end if
Citação::
Depende do que você está usando, qual a versão do .Net Framework do seu programa, versões diferentes do VS.Net também geram classes diferentes para acesso ao WebService, de que tipo de WebService é esse, se é Soap ou WebApi, existem diversos fatores, se estiver usando o .Net Framework 4.5 e VS.Net 2015 ou 2017 verifique se não existem um método chamado EfetuarLoginAsync Task, se sim é possÃvel usar o Async/Await para fazer isso
Sim tem tem método chamado EfetuarLoginAsync agora EfetuarLoginAsync Task não...