다음을 통해 공유


Disable Command Source via System Timer 샘플

업데이트: 2007년 11월

이 샘플에서는 Windows.System.Timers.Timer를 통해 명령 소스를 활성화하거나 비활성화하는 방법을 보여 줍니다.

Windows.System.Timers.Timer는 UI 스레드가 아닌 별도의 스레드에서 실행되기 때문에 UI를 업데이트하려면 몇 가지 추가 작업이 필요합니다. 대부분의 경우 이러한 문제를 해결하는 가장 안정적인 방법은 DispatcherTimer를 사용하는 것입니다. 이 방법은 UI 스레드와 동일한 스레드에서 DispatcherTimer를 실행하기 때문에 더 쉽습니다. 자세한 내용은 Disable Command Source via Dispatcher Timer 샘플을 참조하십시오. 이 샘플에서는 UI 스레드에서 실행되지 않는 클래스를 사용하는 방법을 보여 줍니다.

MenuItem 클래스 및 Button 클래스와 같은 명령 소스는 현재 명령 대상에서 명령을 실행할 수 있는지 여부를 확인하는 명령을 쿼리해야 할 경우를 확인하기 위해 해당 명령 소스가 연결된 RoutedCommandCanExecuteChanged 이벤트를 수신합니다. 일반적으로 명령 소스는 명령을 실행할 수 없으면 비활성화되고 명령을 실행할 수 있으면 활성화됩니다. 예를 들어 명령을 실행할 수 없으면 MenuItem이 회색으로 표시됩니다.

CommandManager는 명령 대상과 함께 조건이 변경되었음을 RequerySuggested 이벤트를 통해 RoutedCommand에게 알립니다. RoutedCommand는 명령 소스가 수신하는 CanExecuteChanged 이벤트를 발생시킵니다. 일반적으로 이 알림 메커니즘이 적합하지만 CommandManager가 명령 대상에서 조건이 변경되었음을 알지 못하여 RequerySuggested 이벤트가 발생되지 않고 명령 소스가 RoutedCommand를 쿼리하지 않는 경우도 있습니다. 이러한 경우 CommandManagerInvalidateRequerySuggested를 호출하여 RequerySuggested 이벤트를 발생시킬 수 있습니다.

이 샘플에서는 현재 시간(초)이 대상 값보다 큰 경우에만 실행될 수 있는 RoutedCommand를 만듭니다. System.Windows.Timers.Timer가 만들어지고 작업을 매초마다 UI 스레드의 Dispatcher에 푸시합니다. 이 작업은 UI 스레드의 Dispatcher에 예약되기 때문에 UI 스레드는 사용자용 UI를 업데이트합니다.

Dispatcher에 푸시된 메서드는 InvalidateRequerySuggested를 호출합니다. 여기에서는 명령 소스가 CanExecuteChanged 이벤트를 받아 명령에서 CanExecute 메서드를 호출할 수 있음을 확인합니다.

명령에 대한 자세한 내용은 명령 개요를 참조하십시오.

이 샘플에서는 Windows Presentation Foundation의 특정 기능에 대해 설명하므로 최선의 응용 프로그램 개발 방법을 따르지 않습니다. WPF(Windows Presentation Foundation) 및 Microsoft .NET Framework 응용 프로그램 개발을 위한 최선의 방법에 대한 자세한 내용은 다음에서 적절한 항목을 참조하십시오.

내게 필요한 옵션 - 액세스 가능성에 대한 유용한 정보

보안 - Windows Presentation Foundation 보안

지역화 - WPF 전역화 및 지역화 개요

Download sample

샘플 빌드

  • Windows SDK(소프트웨어 개발 키트)를 설치하고 빌드 환경 명령 창을 엽니다. 시작 메뉴에서 모든 프로그램, Microsoft Windows SDK를 차례로 가리킨 다음 CMD 셸을 클릭합니다.

  • SDK(소프트웨어 개발 키트) 설명서 등에서 샘플을 하드 디스크 드라이브로 다운로드합니다.

  • 빌드 환경 명령 창에서 샘플을 빌드하려면 샘플의 소스 디렉터리로 이동합니다. 명령 프롬프트에 MSBUILD를 입력합니다.

  • Microsoft Visual Studio에서 샘플을 빌드하려면 샘플 솔루션이나 프로젝트 파일을 로드한 다음 Ctrl+Shift+B를 누릅니다.

샘플 실행

  • 빌드 환경 명령 창에서 컴파일된 샘플을 실행하려면 샘플 소스 코드 폴더 아래에 있는 Bin\Debug 또는 Bin\Release 폴더의 .exe 파일을 실행합니다.

  • Visual Studio에서 디버깅 기능을 사용하여 컴파일된 샘플을 실행하려면 F5 키를 누릅니다.

참고 항목

작업

Disable Command Source via Dispatcher Timer 샘플

개념

명령 개요