2009-06-10 8 views

答えて

1

権限を持っている場合は、常にタスクマネージャからアプリケーションを終了できます。アプリケーションウィンドウでクローズアイコンとクローズメニューオプションを持つシステムメニューオプションを表示するかどうかを単に無効にしたり、表示したりすることはできませんが、前述のようにユーザーがタスクマネージャから終了するのを防ぐことはできません。代わりに、私はちょうどアプリケーションに忙しい処理のアイコンを表示するので、ユーザーは何が起こっているのか理解しています。

2

GUIが別のスレッドで動作して、うまくいけば「応答しない」ことはありません。

+0

私は同意します。あなたのプログラムが「応答していない」場合、あなたは何か間違ったことをしています。 – Talljoe

5

あなたが求めているのは不可能ではありません(十分な特権を持つユーザーは、どのOSに関係なくプロセスを終了できます)、恐ろしいユーザーエクスペリエンス(UX)の決定です。

ユーザーの観点から考えてみましょう。あなたはアプリケーションを見てそこに座っています。アプリケーションは何もしていないように見え、仕事をしているという視覚的なフィードバックをあなたに提供していません。あなたはアプリケーションがハングアップしていて、それを再起動すると思います。

スクロールするプログレスバーを表示することから、実行中のプロセスがUIスレッドの情報を更新することまで何でもできます(インストール中のインストーラを考えてください...どこにファイルを置いているかを絶えず伝えています)待つだけではなく)。いずれにしても、ユーザーに視覚的なフィードバックを提供して、アプリケーションがまだ実行中であることを知っておく必要があります。

2

プログラミングに関する質問であれば、何らかの形でGUIスレッドを縛っているので、あなたのプログラムは決してその状態にならないはずです。また、Windowsやユーザーがプログラムを終了するのを止めることはできません。彼らはコードがごみであることを検出し、貴重なアドレス空間から強制的に投げ捨てる権利を持っています。

いずれの場合でも、あなたのプログラムは他のものを実行するのに忙しいです。ユーザーに応答できない場合、おそらく自分自身を保護する時間を浪費することはできません。

ある時点で、開発者は、コンピュータが属している太い頭蓋骨をユーザに所属させる必要があります。

もちろん、これを防ぐためにWindowsを設定する方法(PCなど)については、この質問はserverfaultにあります。

1

Do not。あなたのアプリケーションがどれほど重要かとは無関係に、自分のシステムを制御するユーザーの能力はより重要です。

0

閉じるボタンを無効にすることができます。ユーザーは、それを回避するために、タスクマネージャーや同様のツールからそれを削除することができます。それを特権的なプロセスとして起動することによって、それをもっと難しくすることができますが、それはそれ自身の多くの問題が伴います。

関連する問題