Please Enable JavaScript!
Gon[ Enable JavaScript ]

시샵 C# 타이머를 이용해서 시계 만드는 방법

기타 언어/C# & MFC
반응형

시샵에서 Thread 를 사용하지 않고 시계를 만들어 보겠습니다. 그 말은 일정하게 반복을 필요로 하는 로직이 있을 경우 Thread 객체 없이 구현이 가능하다는 이야기가 되겠죠. C# 에는 타이머 컨트롤이 있습니다. 이 컨트롤에 Interval 의 값으로 시간을 설정해 두면 반복 이벤트가 발생하게 됩니다. 오늘은 Timer 컨트롤을 이용해서 시계를 구현해 보도록 하겠습니다.

 

 

 

Timer 클래스는 두 종류가 있습니다. 멀티 쓰레드과 싱글 쓰레드로 나누는데 타이머 컨트롤은 싱글 쓰레드에 해당합니다. 멀티 쓰레드는 말 그대로 여러 개의 쓰레드를 만들어서 쓰레드풀로 관리를 합니다.

 

 

멀티 쓰레드 클래스

   - System.Threading.Timer

   - System.Timers.Timer

 

싱글 쓰레드 클래스

  - System.Windows.Forms.Timer

  - System.Windows.Threading.DispatcherTimer

 

 

먼저 시계를 표시할 폼을 추가해 보겠습니다. 프로젝트를 선택하고 오른마우스를 눌러 [Add] > [Windows Form] 메뉴를 선택합니다.

시샵 C# 타이머를 이용해서 시계 만드는 방법

 

아이템 생성 팝업창에서 Windows Form 을 선택하고 아래로 내려가 이름을 정한 뒤 Add 버튼을 눌러 프로젝트에 추가합니다

시샵 C# 타이머를 이용해서 시계 만드는 방법

 

※ 아래는 참고하면 좋을 만한 글들의 링크를 모아둔 것입니다.
시샵 C# 새로운 Form 다이얼로그, 팝업창 띄우기, 원하는 위치에 띄우기
시샵(C#) 프로젝트 기본 시작 Form 설정하기
C# 윈폼(WinForm) 프로젝트에서 콘솔창(console) 띄워서 로그 보는 방법
시샵 C# DataSet 셋팅과 읽기 오기 위한 여러가지 방법
C# 문자열변환 string -> int , int -> string

 

 

 

 

새로 생성된 폼에 시간이 표시될 라벨과 시계 시작을 알리는 버튼을 추가합니다

시샵 C# 타이머를 이용해서 시계 만드는 방법

 

다음은 Timer 컨트롤을 추가해야 겠죠. 왼쪽 사이드바에 있는 Toolbox 에서 Timer 컨트롤을 끌어 폼으로 가져갑니다. 컨트롤을 추가하게 되면 화면에 나타나는 것이 아니라 폼 아래 분리된 영역에 표시가 됩니다

시샵 C# 타이머를 이용해서 시계 만드는 방법

 

다음은 타이머에 반복할 시간 간격을 설정해야겠죠. 타이머 속성으로 가서 Interval 값을 정합니다. 값의 단위는 1/1000 초 입니다. 그러니까 1,000 1초가 되는 것이죠. 저는 1초에 한번씩 이벤트가 발생하도록 했습니다

시샵 C# 타이머를 이용해서 시계 만드는 방법

 

다음은 로직을 추가할 이벤트 함수를 만들어야 합니다. 속성 탭 바로 옆에 번개 모양의 아이콘이 보이시죠. 그것이 이벤트 탭입니다. Tick 항복 바로 옆에 빈 칸을 더블클릭하면 컨트롤명으로 함수가 자동 생성됩니다

시샵 C# 타이머를 이용해서 시계 만드는 방법

 

생성된 함수에 시간을 표시할 로직을 추가합니다. 현재 시간을 나타내는 소스는 다음과 같습니다. DateTime.Now.ToLongTimeString(); 을 이벤트 함수에 넣어 주세요. 그리고 시작 버튼에는 타이머 시작을 알리는 함수를 넣어야 겠죠

시샵 C# 타이머를 이용해서 시계 만드는 방법

 

그림과 같이 시계가 들어 있는 폼을 완성했습니다

시샵 C# 타이머를 이용해서 시계 만드는 방법

※ 아래는 참고하면 좋을 만한 글들의 링크를 모아둔 것입니다.
시샵 C# 새로운 Form 다이얼로그, 팝업창 띄우기, 원하는 위치에 띄우기
시샵(C#) 프로젝트 기본 시작 Form 설정하기
C# 윈폼(WinForm) 프로젝트에서 콘솔창(console) 띄워서 로그 보는 방법
시샵 C# DataSet 셋팅과 읽기 오기 위한 여러가지 방법
C# 문자열변환 string -> int , int -> string
반응형
Posted by 녹두장군1
,