> 백엔드 개발 > C++ > Console.Readline ()에 타임 아웃을 추가하려면 어떻게해야합니까?

Console.Readline ()에 타임 아웃을 추가하려면 어떻게해야합니까?

Barbara Streisand
풀어 주다: 2025-01-28 10:51:10
원래의
980명이 탐색했습니다.

콘솔을 입력하려면 타임 아웃 메커니즘을 입력하십시오 How Can I Add a Timeout to Console.ReadLine()?
문제 설명

콘솔 애플리케이션은 종종

메소드를 사용하여 사용자 입력을 나타냅니다. 그러나 특히 자동화 시나리오에서는 사용자 응답 시간을 제한해야 할 수도 있습니다. 이것은 질문으로 이어집니다.이 상황을 어떻게 처리하여

타임 아웃 메커니즘을 추가합니까? 완전한 솔루션 대체 기능, 비정상적인 행동 또는 자원 집약적 대기 대기와 같은 이전 솔루션에는 몇 가지 제한이있을 수 있지만 여러 호출이 발생할 때이 고급 솔루션은 이러한 문제를 효과적으로 해결합니다.

이 솔루션의 장점

Console.ReadLine() 예비 기능 : Console.ReadLine() 다른 방법은 를 사용하여 편집기를 포함하여 모든 기능을 유지합니다.

관리 다중 통화 :

는 여러 스레드 또는 데드 잠금 장치를 생성하지 않고 지속적인 통화가 정상적으로 실행될 수 있도록합니다. 바쁜 대기를 제거하십시오 : 이 솔루션은 멀티 스레드를 사용하여 폐기물을 피하고 관련 자원을 기다리는 중다.

예제 사용

사용법을 설명하려면 다음 예를 고려하십시오.

또는 출력 매개 변수와 함께
class Reader
{
    private static Thread inputThread;
    private static AutoResetEvent getInput, gotInput;
    private static string input;

    static Reader()
    {
        getInput = new AutoResetEvent(false);
        gotInput = new AutoResetEvent(false);
        inputThread = new Thread(reader);
        inputThread.IsBackground = true;
        inputThread.Start();
    }

    private static void reader()
    {
        while (true)
        {
            getInput.WaitOne();
            input = Console.ReadLine();
            gotInput.Set();
        }
    }

    public static string ReadLine(int timeOutMillisecs = Timeout.Infinite)
    {
        getInput.Set();
        bool success = gotInput.WaitOne(timeOutMillisecs);
        if (success)
            return input;
        else
            throw new TimeoutException("用户未在规定时间内提供输入。");
    }

    public static bool TryReadLine(out string result, int timeOutMillisecs = Timeout.Infinite)
    {
        getInput.Set();
        bool success = gotInput.WaitOne(timeOutMillisecs);
        if (success)
        {
            result = input;
            return true;
        }
        else
        {
            result = null;
            return false;
        }
    }
}
로그인 후 복사
메소드를 사용할 수 있습니다.

결론 이 고급 솔루션은 지정된 시간 제한으로 사용자 입력 시나리오를 효과적으로 처리하기 위해 타임 아웃 메커니즘을

에 추가하는 포괄적이고 효율적인 방법을 제공합니다.

    위 내용은 Console.Readline ()에 타임 아웃을 추가하려면 어떻게해야합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

    본 웹사이트의 성명
    본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
    저자별 최신 기사
    인기 튜토리얼
    더>
    최신 다운로드
    더>
    웹 효과
    웹사이트 소스 코드
    웹사이트 자료
    프론트엔드 템플릿