2010-11-27 2 views
1

J'essaie de développer un convertisseur vidéo en utilisant C# et mencoder. Pour le moment, cela fonctionne, mais j'ai quelques problèmes à résoudre. En particulier.net Processus: comment «surveiller» la sortie du processus et rendre l'application répondant à l'événement

  1. Est-il possible de "ne pas bloquer" mon application frontale pendant que le processus est exécuté? En cours mon application cesse de répondre à l'événement jusqu'à la fin du processus appelé

  2. En cours .net classe existe un événement pour gérer le standardoutput de mon application, donc je peux mettre à jour par exemple une zone de texte avec la sortie?

Merci

Répondre

1

je l'ai trouvé

p.OutputDataReceived += new DataReceivedEventHandler(MEncoderOutputHandler); 
0

utilisation Application.DoEvents() également si vous appelez une fonction qui bloque le code et prennent beaucoup de temps pour vous répondre ne devrait pas l'appeler du thread d'interface utilisateur . Il suffit de créer un nouveau fil, d'appeler la fonction et d'interagir avec l'interface utilisateur. Notez également que l'accès à l'interface utilisateur à partir d'un autre thread entraîne des exceptions, vous devez donc les gérer à l'aide de délégués ou utiliser le contrôle backgroundworker.

+0

'Application.DoEvents' est * généralement * un mauvais choix et ne devrait être utilisé que comme solution de contournement. La possibilité d'obtenir un événement lorsque la sortie est disponible ou de lire le flux de sortie de manière asynchrone est à la fois meilleure. – Richard

Questions connexes