태터데스크 관리자

도움말
닫기
적용하기   첫페이지 만들기

태터데스크 메시지

저장하였습니다.

아마 Win32API를 배울때 두번째로 배우는 가장 기본적인 MessageBox함수는 모달 다이얼로그이긴 하지만 타이머와 함께 사용하면 더 이상 모달이 아닌게 됩니다.

타이머 내에서 MessageBox를 호출하면 이전 메시지박스가 있던지 없던지에 상관없이 무조건 뜹니다. 즉 메시지박스가 수도없이 뜨게 되죠. 이를 막는 가장 간단한 방법은, 타이머를 일시 중지 시키는 겁니다. 물론 프로그램 로직에 영향을 미치지 않는 타이머일때만 사용가능하겠죠. 그게 아니라면 프로그램의 요구사항에 맞춰서 적절한 방법을 고안해야죠.

private DialogResult SafeMessageBox(string text, string caption, MessageBoxButtons buttons)
{
	DialogResult result;

	if(changeCycleTimer.Enabled)
	{
		changeCycleTimer.Stop();

		result = MessageBox.Show(text, caption, buttons);

		changeCycleTimer.Start();
	}
	else
	{
		result = MessageBox.Show(text, caption, buttons);
	}

	return result;
}