일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 오라클
- Python
- sql developer
- 딥러닝
- 윈도우10
- django
- Visual Studio Code
- Serial
- M2M
- 텐서플로우
- PYTHON MSSQL
- 자본주의
- rs422
- windows10
- c#
- MSSQL PYTHON
- MEAN Stack
- 파이썬
- scrapy
- matplot
- tensorflow
- rs485
- 크롤링
- 티스토리 초대장
- MSSQL
- oracle
- 장고
- vscode
- MX Component
- pymssql
Archives
- Today
- Total
안까먹을라고 쓰는 블로그
[C#] 딜레이 주기 (Feat. 윈도우폼에 영향없이) 본문
반응형
딜레이 함수
private void Delay_Manual(int iDelay)
{
// 현재시같은 넣어준다.
DateTime ThisMoment = DateTime.Now;
// 딜레이 시간에 맞춰 Term값을 구한다.
TimeSpan duration = new TimeSpan(0, 0, 0, 0, iDelay * 1000);
// 딜레이 시간에 맞춘 Term이 더해진, 종료시간을 구한다.
DateTime AfterWards = ThisMoment.Add(duration);
while (true)
{
ThisMoment = DateTime.Now;
// 현재 메시지 큐에있는 모든 Windows 메시지를 처리합니다.
System.Windows.Forms.Application.DoEvents();
// 종료시간 <= 현재시간 보다 작거나 같으면 종료
if (AfterWards <= ThisMoment) break;
}
}
사용예시 (ADAM-6266을 이용한, 디지털 아웃시간(경광등 울리는 시간) 설정)
// 경광등 On (DO0 - On)
GV.cMB.WriteSingleCoil(1, Convert.ToUInt16(iDO + 15), true);
// 5초간 유지
Delay_Manual(5000);
// 경광등 Off (DO0 - Off)
GV.cMB.WriteSingleCoil(1, Convert.ToUInt16(iDO + 15), false);
일반 적인 System.Threading.Thread.Sleep(1000); 함수를 이용하여, 딜레이 처리시에는
딜레이가 조금 길어지는 경우, 윈도우폼에 영향을 주어, 폼이 행 걸리는 것과 같은 문제가 발생한다.
반응형
'Language > C#' 카테고리의 다른 글
[C#] WINFORM - 구글맵 연동 (0) | 2021.07.26 |
---|---|
[C#] 시큐어코딩 - Cross Site Scripting (XSS) (0) | 2020.09.14 |
[C#] 교육사이트 (0) | 2020.06.05 |
[C#] 공백제거 (0) | 2020.04.07 |
[C#] byte 형 변환 (0) | 2020.03.23 |
Comments