이스케이프 키를 누르거나 제한 시간이 제공 될 때까지 입력을 기다리는 일부 텍스트와 루프를 표시하는 매우 간단한 C # 콘솔 응용 프로그램이 있습니다.
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Text;
using System.Threading;
namespace SampleApp
{
public static class Program
{
public static void Main (string [] args)
{
var key = new ConsoleKeyInfo();
var watch = Stopwatch.StartNew();
var timeout = TimeSpan.FromSeconds(5);
Console.WriteLine("Press escape to return to the previous screen...");
Console.WriteLine();
do
{
Console.WriteLine("This screen will automatically close in " + ((timeout + TimeSpan.FromSeconds(1)) - watch.Elapsed).ToString(@"hh\:mm\:ss") + ".");
if (Console.KeyAvailable) { key = Console.ReadKey(true); }
else { Thread.Sleep(TimeSpan.FromSeconds(0.10D)); }
}
while ((key.Key != ConsoleKey.Escape) && (timeout > (watch.Elapsed - TimeSpan.FromSeconds(0.5D))));
watch.Stop();
}
}
}
이것은 잘 작동하지만 마우스로 콘솔 앱을 클릭하면 (예 : 포커스를 얻기 위해) 화면의 모든 활동이 마우스 오른쪽 버튼을 클릭하거나 Esc 키를 누를 때까지 정지됩니다. 이 기간 동안 콘솔 의 제목도 이전 제목 "Select AppName"
이라고 가정 "AppName"
하여 변경됩니다 .
먼저 콘솔을 마우스 오른쪽 버튼으로 클릭하면 do {...} while ();
루프가 미친 것처럼 보이며 많은 추가 라인이 인쇄됩니다.
콘솔의 이러한 동작을 알지 못하기 때문에 무엇을 물어봐야할지 모르겠습니다. 이것이 예상됩니까? 그렇다면이 동작을 변경할 수 있습니까? 그렇지 않은 경우 해결 방법에 대한 제안을 주시면 감사하겠습니다.
이 문제는 위의 Hans의 의견을 사용하여 해결되었습니다.
분명히 빠른 편집 모드는 어떤 이유로 콘솔 기본값 (Alt + Space, 기본값, 옵션, 편집 옵션, 빠른 편집 모드)으로 설정되었습니다. 선택 취소하여 문제가 해결되었습니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다