실제시간->현재 리얼타임 시간을 받아와서 뿌림
타이머시간->처음에만 리얼타임시간을 받고 1초마다 초를 증가시켜줌
컴퓨터성능에따라, 멀티프로그래밍갯수(시스템이 바쁨에따라)에 따라 타이머시간이 누락될수도있다.
처음엔 실제시간과 타이머시간이 같지만 시간의 지남에 따라
실제시간과 타이머시간이 차이나게된다.
시스템이 굉장히 바쁠 때는 타이머가 정확한 주기대로 발생하지 않으므로 이렇게 만들면 시계가 금방 느려진다.
타이머 이벤트는 작업을 해야 할 적당한 시점을 대충 알려줄 뿐이다.
--소스--
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace MyTimer
{
public partial class Form1 : Form
{
private string Time;
private string Time2;
private int hour;
private int min;
private int sec;
public Form1()
{
DateTime dt = DateTime.Now;
hour = dt.Hour;
min = dt.Minute;
sec = dt.Second;
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
Timer T = new Timer();
T.Interval = 1000;//정확하게 1초가아닐수도있다. p647
T.Tick += new EventHandler(Form1_Timer);
T.Tick += new EventHandler(Form1_Timer2);
T.Start();
}
private void Form1_Paint(object sender, PaintEventArgs e)
{
e.Graphics.DrawString(Time, this.Font, Brushes.Black, 10, 10);
e.Graphics.DrawString(Time2, this.Font, Brushes.Black, 10, 30);
}
private void Form1_Timer(object sender, System.EventArgs e)
{
DateTime dt = DateTime.Now;
Time = "리얼타임"+dt.Hour + "시 " + dt.Minute + "분 " + dt.Second + "초";
Invalidate();
}
private void Form1_Timer2(object sender, System.EventArgs e)
{
sec++;
min += sec / 60;
sec %= 60;
hour += min / 60;
min %= 60;
Time2 ="타이머타임"+ hour + "시 " + min+ "분 " + sec + "초";
Invalidate();
}
}
}
'코딩공부 > C# .NET' 카테고리의 다른 글
.NET C# 메뉴 통제하기 (0) | 2013.05.08 |
---|---|
.NET C# DB테이블만들기부터 DB연동까지 (0) | 2013.05.04 |
.NET C# 텍스트박스 입력시 암호로 나타내기 (비밀번호입력) (2) | 2013.05.02 |
.NET C# 폼에 새로운폼 띄우기 (0) | 2013.05.02 |