Pergunta

Estou usando um controle Windows Forms de terceiros que executa algumas ações "atrasadas" usando o evento Application.Idle.

Agora que estamos migrando nosso aplicativo para WPF, essas ações pararam de funcionar.Descobri que o evento System.Windows.Forms.Application.Idle não é gerado conforme o esperado.

Como posso fazer com que o evento Idle seja acionado em um aplicativo WPF para que eu possa continuar a usar esse controle de terceiros (dentro de um WindowsFormsHost)?Isso é não possível modificar o controle Windows Forms.

Foi útil?

Solução

Você deveria ler esta página no MSDN que descreve o comportamento do loop de mensagens em um aplicativo WPF.Em particular, parece que a classe ComponentDispatcher pode ser usada para capturar um evento ThreadIdle que corresponderia aproximadamente ao evento Application.Idle do Windows Forms.

Você poderia então presumivelmente usar o System.Windows.Forms.Application.RaiseIdle método para gerar o evento Idle conforme o componente espera.

Outras dicas

Se você estiver usando um aplicativo WPF, na verdade não estará mais usando o System.Windows.Forms.Application Class para executar seu aplicativo, mesmo que o seu aplicativo contenha um controle do Windows Forms.

Em vez disso, você está usando o System.Windows.Application Class (espaço para nome diferente).

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top