5

テストのために、プログラムを「応答なし」に見せる最も簡単な方法は何ですか? Windows メッセージを中断するか、無限ループに入れますか?

私は次のような単純なループを試しました

while(true)

しかし、それはうまくいきません。テスト アプリケーションは C# コンソール アプリです。コンソールで実行されているという事実は、「応答性が高く」なりますか? おそらく、追加されたコンソール処理のいくつかの部分が、常に応答するようになっているのでしょうか?

アップデート:

それを単純なWinformアプリケーションに変更して、それを無限ループに入れました。魅力のように働きました。サービのおかげです。

4

4 に答える 4

6

Windowsタスクマネージャの観点から、コンソールアプリケーションが「応答しない」ことはありません。実際には、タスクマネージャーはプログラムを実行しておらず、プログラムを実行しているシェル(cmd.exe)を実行しており、そのシェルは、プログラムが実行されていなくても常に応答するように記述されています。シェルを介してプログラムを実行していないが、プログラムを直接起動している場合、プログラムのUIはなく、タスクマネージャーの「アプリケーション」にはなりません(つまり、に表示されません) 「アプリケーション」タブ)、それは単なるプロセスになります。

タスクマネージャーの観点から「応答しない」プログラムを模倣する必要がある場合は、単純なWinFormsアプリケーションを作成し、それを無限ループに入れる必要があります。コンソールアプリからプログラムを「応答しない」ように見せるためのあいまいな方法がある場合、少なくとも、標準のデスクトップGUIタイプのいずれよりもはるかに困難になります。

于 2012-09-24T13:40:50.627 に答える
3

あなたはすることができますThread.Sleep(X)

于 2012-09-24T13:25:55.953 に答える
2

プログラムを無期限に「応答しない」ようにする最も簡単な方法は、無限ループを使用することです。

while(true);
于 2012-09-24T13:26:17.077 に答える
1

UI スレッドで何らかの作業を行う (UI アプリケーションの場合)

Thread.Sleep  



  While (true)

これにより、何を達成しようとしているのかについての洞察が得られる場合があります (大量の文字を連続して出力すると、.net コンソール アプリが応答を停止します) 。

于 2012-09-24T13:27:10.263 に答える