0

コンソールに最新のアクティビティとステータスを表示するコンソールアプリケーションがあります。アプリケーションはスレッド化されており、パフォーマンスが主な懸念事項です。ユーザーとの対話は必要ありません。最近のケースのため、iveはそれをwinフォームアプリケーションに移行するように求められました。

最初の投稿-> C#コンソールアプリケーションのクイック編集モードをプログラムで無効にする方法は?

そのため、この問題に遭遇するために、Application.Run(ApplicationContext context)を使用して、コンソールアプリケーションでメッセージループを開始し、マウスイベントをフックしてトラップし、実行時にクイック編集モードをリセットできるようにしました。また、ユーザーがマーク/コピー/貼り付けできないように、右クリックで表示されるコンソールのデフォルトメニュー項目「編集」を削除しました。

フォームまたはコンソールアプリを獲得するために移行して、最適なソリューションを知りたいです(私が行った変更を考慮して)。また、タスクをUIのキューに入れて、winformに移行した場合にメッセージを出力するために、毎回Invokeを呼び出す必要があります。

4

2 に答える 2

2

WinFormsを使用すると、UIでできることの柔軟性が確実に高まります。

パフォーマンスに関しては、パフォーマンスを問題にするために、実際には多くのUI更新を行う必要があります。あなたは現在コンソールアプリケーションでそれを成し遂げているので、そうではないように思えます。ほとんどの場合、UIのパフォーマンスは、UIスレッドが更新に追いつかないためではなく、UI以外のもの(ファイルIO、データベースクエリなど)がUIスレッド内で実行されるために影響を受けます。

于 2012-12-01T10:12:14.540 に答える
1

アプリケーションを変更して、出力をコンソールではなくログファイル、軽量データベース、またはWindowsイベントログにストリーミングすることを検討します。したがって、アプリケーションはコンソールやUIをまったく必要とせず、代わりにサービスとして実行できます。誰かがそのメッセージを見たい場合は、別の(おそらくWinforms)プログラムを渡して最新の出力を表示するか、Windowsイベントログを使用する場合は、Windowsイベントビューアを使用してプログラムの出力を確認できます。

したがって、アプリケーションをWinformsに移行したり、醜いコンソールハックを行ったりする必要はありません。

ログファイルを処理するには、Microsoftログパーサーが役立つ場合があります。

于 2012-12-01T10:36:46.307 に答える