반응형
* C# 시간 체크 (Time Check) 예제...
전체 소스 코드
Form1.cs
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 CSharp_TimeCheck
{
public partial class Form1 : Form
{
bool bClick = false;
DateTime dtClick ;
bool bThread = true;
System.Threading.Thread thMain;
public Form1()
{
InitializeComponent();
//크로스 스레드 오류 방지
CheckForIllegalCrossThreadCalls = false;
thMain = new System.Threading.Thread(new System.Threading.ThreadStart (Thread_Tick));
//1. 첫번째 방법 : 스레드
//이 스레드를 백그라운드로 지정 할 것인지 포어 그라운드로 지정 할 것인지...
//true: 백그라운드 스레드 , false: 포어그라운드
//기본은 false 포어그라운드
//thMain.IsBackground = true;
thMain.Start();
//2. 두번째 방법 : 윈도우 타이머
//타이머가 돌아가는 시간
//timer1.Interval = 300;
//timer1.Start();
}
private void Form1_FormClosed(object sender, FormClosedEventArgs e)
{
//스레드 객체가 null 이 아니면...
bThread = false;
if (thMain != null)
{
//스레드가 돌아가고 있으면
if (thMain.IsAlive)
{
//강제 종료
thMain.Abort();
}
thMain = null;
}
}
private void button1_Click(object sender, EventArgs e)
{
dtClick = DateTime.Now;
bClick = true;
}
private double After_Time(DateTime dtNow, DateTime dtBefore)
{
TimeSpan ts = dtNow - dtBefore;
return ts.TotalSeconds;
}
//스레드 이벤트...
void Thread_Tick()
{
while (bThread)
{
if (bClick)
{
label1.Text = string.Format("{0:##0}", After_Time(DateTime.Now, dtClick));
}
System.Threading.Thread.Sleep(100);
}
}
//타이머 이벤트...
private void timer1_Tick(object sender, EventArgs e)
{
if (bClick)
{
label1.Text = string.Format("{0:##0}", After_Time(DateTime.Now, dtClick));
}
}
}
}
* 예제 결과
https://kdsoft-zeros.tistory.com/22
반응형
'C# Programming' 카테고리의 다른 글
[C#] 프로젝트 리소스 (Resources) 에 추가된 이미지 불러오기 (0) | 2020.01.01 |
---|---|
[C#] 컨트롤 이름으로 찾아서 컨트롤 배열 처럼 사용 하기 (0) | 2019.12.30 |
[C#] PC 비프음 (Beep) (0) | 2019.12.27 |
[C#] [API] 윈도우 창 찾기 (Window Form Search) (0) | 2019.12.20 |
[C#] [API] 다른 응용 프로그램 실행 시키기 : ShellExecute () (0) | 2019.12.18 |