私は自分のサーバー上でソケットサーバーを実行しています。私が寝る前に、ウィンドウのIPアドレスを強調表示し、Enterキーを押してプロセスを再開するのを忘れたことが判明しました。コンソールの選択がアプリケーションを停止します
これはコンソールでの選択を無効にする方法ですが、まだアプリケーションを一時停止せずに選択できるようにしたいと考えています。
#region Disable Quick-Edit Mode
[DllImport("kernel32.dll")]
static extern bool SetConsoleMode(IntPtr hConsoleHandle, int mode);
[DllImport("kernel32.dll")]
static extern bool GetConsoleMode(IntPtr hConsoleHandle, out int mode);
[DllImport("kernel32.dll")]
static extern IntPtr GetStdHandle(int handle);
const int STD_INPUT_HANDLE = -10;
const int ENABLE_EXTENDED_FLAGS = 0x80;
public static void DisableQuickEditMode()
{
int mode;
IntPtr handle = GetStdHandle(STD_INPUT_HANDLE);
GetConsoleMode(handle, out mode);
mode |= ENABLE_EXTENDED_FLAGS;
SetConsoleMode(handle, mode);
mode &= ~ENABLE_QUICK_EDIT;
SetConsoleMode(handle, mode);
}
私は本当にそれが本当にこれらの新機能を(特に開発者のために)持っているのに役立ちないため、コマンドプロンプトのレガシーモードに戻りたいとは思いませんが、私は予防する方法を見つける必要がありますコンソールを一時停止すると、アプリケーションは停止しません。興味深いのは、今朝私がEnterキーを押すと、試行されたすべての接続が処理され、処理された後に削除されたということです。おそらく、私はアプリケーションを間違って書いているのだろうかと思います。私は "コンソール"スレッドと "サーバー"スレッドが必要です。しかし、私はそれが違いを生むかもしれないとは思っていません。
これはWindows上で実行されるすべてのコンソールプログラムで起こります。単に選択した結果として新しい出力が表示されなくなるため、結果的に 'Console.WriteLine()'のような呼び出しができなくなります。フル。この質問はプログラミングとは関係ありません。 WIndowsの基本的なユーザートピックです。 –
ああ申し訳ありません。私はそれが事実であるとは決して考えなかった。私は非常に頻繁にコンソールアプリケーションを使用していないと私はほとんどのプログラマーがそれのためのハックを持っていたと仮定した。恩赦。 – Fuselight