Este artigo é um artigo espelhado de tradução automática, por favor clique aqui para ir para o artigo original.

Vista: 16327|Resposta: 5

[WinForm] Como as threads em segundo plano operam páginas web frame

[Copiar link]
Publicado em 22/01/2019 21:43:08 | | |
Primeiramente, se eu executar a seguinte instrução com um thread de interface, não há problema
        private void button9_Click_1(object sender, EventArgs e)
        {
            MSHTML. HTMLDocument doc = GetIe("URL"); GetIe é um método para obter documentos de IE em uma URL especificada;
            doc.frames.item(0).document.all.item("txtLimits").innerText = "123";
        }
No entanto, se eu colocar em um thread em segundo plano, ele lança uma exceção: InvalidCastException, a conversão especificada é inválida, o código é o seguinte
   void assíncrono privado button9_Click_1(object sender, EventArgs e)
        {
            Ação Ação = nova Ação (test12);
            aguardar Tarefa.Correr(ação);
        }
        Teste Privado Anulado12()
        {
            MSHTML. HTMLDocument doc = GetIe("URL");
            doc.frames.item(0).document.all.item("txtLimits").innerText = "123";
        }

。。。 Como escrever a correta?




Anterior:Notas de Estudo em C# de hoje
Próximo:"Senran Kagura Burst: Re:Newal" versão gratuita em chinês e inglês
Publicado em 23/01/2019 08:03:26 |
Publicado em 23/01/2019 09:08:36 |

Pontuação

Número de participantes1MB+1 contribuir+1 Colapso razão
crystal0330 + 1 + 1 Muito poderoso!

Veja todas as classificações

 Senhorio| Publicado em 23/01/2019 22:04:56 |

Muito obrigado, o problema está resolvido, é só que sou novo no assíncrono e não entendo por que está escrito assim, seria mais perfeito se você pudesse explicar.
 Senhorio| Publicado em 24/01/2019 06:38:37 |
Este post foi editado pela última vez por crystal0330 em 24-01-2019 às 06:55

Olá, também encontrei um problema no futuro:



ClickYes é um método que permite mover o mouse até o botão OK na janela pop-up e clicar duas vezes



Agora tenho dois problemas:
1. Escreva assim,ClickYes só pode permitirO segundo clique do mouse, ou seja, o primeiro clique não é executado; se estiver na thread da interface, pode ser clicado duas vezes;
2. Atingi um ponto de interrupção no método ClickYes e, depois que o programa foi interrompido, apertei F11 novamente e não executei o próximo código no ClickYes. Então, como depurar passo a passo?

 Senhorio| Publicado em 24/01/2019 14:33:03 |

Olá, acabei de tentar de novo, e quando escrevo assim, a interface do winform trava de novo, o que é o mesmo efeito de usar a thread da interface diretamente...
Disclaimer:
Todo software, material de programação ou artigos publicados pela Code Farmer Network são apenas para fins de aprendizado e pesquisa; O conteúdo acima não deve ser usado para fins comerciais ou ilegais, caso contrário, os usuários terão todas as consequências. As informações deste site vêm da Internet, e disputas de direitos autorais não têm nada a ver com este site. Você deve deletar completamente o conteúdo acima do seu computador em até 24 horas após o download. Se você gosta do programa, por favor, apoie um software genuíno, compre o registro e obtenha serviços genuínos melhores. Se houver qualquer infração, por favor, entre em contato conosco por e-mail.

Mail To:help@itsvse.com