시샵에서 Thread 를 사용하지 않고 시계를 만들어 보겠습니다. 그 말은 일정하게 반복을 필요로 하는 로직이 있을 경우 Thread 객체 없이 구현이 가능하다는 이야기가 되겠죠. C# 에는 타이머 컨트롤이 있습니다. 이 컨트롤에 Interval 의 값으로 시간을 설정해 두면 반복 이벤트가 발생하게 됩니다. 오늘은 Timer 컨트롤을 이용해서 시계를 구현해 보도록 하겠습니다.
▼ Timer 클래스는 두 종류가 있습니다. 멀티 쓰레드과 싱글 쓰레드로 나누는데 타이머 컨트롤은 싱글 쓰레드에 해당합니다. 멀티 쓰레드는 말 그대로 여러 개의 쓰레드를 만들어서 쓰레드풀로 관리를 합니다.
멀티 쓰레드 클래스
- System.Threading.Timer
- System.Timers.Timer
싱글 쓰레드 클래스
- System.Windows.Forms.Timer
- System.Windows.Threading.DispatcherTimer
먼저 시계를 표시할 폼을 추가해 보겠습니다. 프로젝트를 선택하고 오른마우스를 눌러 [Add] > [Windows Form] 메뉴를 선택합니다.
▼ 아이템 생성 팝업창에서 Windows Form 을 선택하고 아래로 내려가 이름을 정한 뒤 Add 버튼을 눌러 프로젝트에 추가합니다.
▼ 새로 생성된 폼에 시간이 표시될 라벨과 시계 시작을 알리는 버튼을 추가합니다.
▼ 다음은 Timer 컨트롤을 추가해야 겠죠. 왼쪽 사이드바에 있는 Toolbox 에서 Timer 컨트롤을 끌어 폼으로 가져갑니다. 컨트롤을 추가하게 되면 화면에 나타나는 것이 아니라 폼 아래 분리된 영역에 표시가 됩니다.
▼ 다음은 타이머에 반복할 시간 간격을 설정해야겠죠. 타이머 속성으로 가서 Interval 값을 정합니다. 값의 단위는 1/1000 초 입니다. 그러니까 1,000 이 1초가 되는 것이죠. 저는 1초에 한번씩 이벤트가 발생하도록 했습니다.
▼ 다음은 로직을 추가할 이벤트 함수를 만들어야 합니다. 속성 탭 바로 옆에 번개 모양의 아이콘이 보이시죠. 그것이 이벤트 탭입니다. Tick 항복 바로 옆에 빈 칸을 더블클릭하면 컨트롤명으로 함수가 자동 생성됩니다.
▼ 생성된 함수에 시간을 표시할 로직을 추가합니다. 현재 시간을 나타내는 소스는 다음과 같습니다. DateTime.Now.ToLongTimeString(); 을 이벤트 함수에 넣어 주세요. 그리고 시작 버튼에는 타이머 시작을 알리는 함수를 넣어야 겠죠.
▼ 그림과 같이 시계가 들어 있는 폼을 완성했습니다.
'기타 언어 > C# & MFC' 카테고리의 다른 글
시샵 C# 파일경로에서 확장자, 파일명, 경로 추출하는 함수와 예제 (2) | 2023.10.22 |
---|---|
시샵 C# 리스트뷰(ListView) 컨트롤 선택한 데이터 가져오기 (0) | 2023.09.18 |
시샵 C# 시작 Main 클래스 변경하기 (0) | 2023.09.15 |
시샵 C# 리스트뷰(ListView) 컨트롤 선택한 데이터 가져오기 (0) | 2022.12.11 |
C 언어 재귀구조의 피보나치 수열 만드는 방법 (0) | 2022.11.27 |
C# 문자열변환 string -> int , int -> string (1) | 2022.11.22 |
C 언어 printf 함수 이용해서 문자열을 출력하는 방법 (0) | 2022.11.05 |
시샵 C# 새로운 Form 다이얼로그, 팝업창 띄우기, 원하는 위치에 띄우기 (0) | 2022.10.28 |