私はC#とmencoderを使用してビデオコンバータを開発しようとしています。 現時点では動作しますが、解決すべき問題がいくつかあります。特に.netプロセス:プロセス出力を監視してアプリケーションイベントを応答させる方法
実行中にフロントエンドアプリケーションを「ブロックしない」ことは可能ですか?実際に私のアプリは、呼び出されたプロセスが終了するまでイベントに応答するのをやめます。
処理中.netクラスには、アプリケーションの標準出力を管理するためのイベントがいくつか存在します。
おかげ
私はC#とmencoderを使用してビデオコンバータを開発しようとしています。 現時点では動作しますが、解決すべき問題がいくつかあります。特に.netプロセス:プロセス出力を監視してアプリケーションイベントを応答させる方法
実行中にフロントエンドアプリケーションを「ブロックしない」ことは可能ですか?実際に私のアプリは、呼び出されたプロセスが終了するまでイベントに応答するのをやめます。
処理中.netクラスには、アプリケーションの標準出力を管理するためのイベントがいくつか存在します。
おかげ
は、私が見つかりました。それ
p.OutputDataReceived += new DataReceivedEventHandler(MEncoderOutputHandler);
あなたはブロックがコードとは、あなたがUIスレッドから呼び出すべきではありません応答に時間がかかるという関数を呼び出す場合にも使用Application.DoEvents()
。新しいスレッドを作成し、関数を呼び出してUIと対話してください。 他のスレッドからUIにアクセスすると例外がスローされるので、代理人を使用して処理するか、backgroundworker
コントロールを使用する必要があります。
'Application.DoEvents'は*概して*悪い選択肢であり、回避策としてのみ使用してください。出力が利用可能になったときにイベントを取得したり、出力ストリームを非同期的に読み取ったりする機能はどちらも優れています。 – Richard