다음은 흥미로운 데모입니다. 릴리스 모드로 컴파일 된이 데모를 실행해야합니다. 그렇지 않으면 보급 된대로 작동하지 않을 수 있습니다.
버전 1 :
private void Button_Click(object sender, EventArgs e)
{
Timer timer = new Timer(Print, null, 0, 1000);
}
private void Print(Object o)
{
if (textBox1.InvokeRequired)
{
Action<object> action = Print;
textBox1.Invoke(action, o);
return;
}
textBox1.Text = DateTime.Now.ToString();
}
버전 1 행복하게 한 번 텍스트 상자 두 번째로 날짜와 시간을 인쇄합니다.
버전 2 : 선언 후, 타이머 객체 참조가 존재하지 않게, 때문에 지금
private void Button_Click(object sender, EventArgs e)
{
Timer timer = new Timer(Print, null, 0, 1000);
}
private void Print(Object o)
{
if (textBox1.InvokeRequired)
{
Action<object> action = Print;
textBox1.Invoke(action, o);
return;
}
textBox1.Text = DateTime.Now.ToString();
GC.Collect(); // force a garbage collection
}
버전 2는 날짜와 시간은 한 번만 인쇄됩니다, 그래서 타이머 객체 가져 모은.
상당히 고안된 예이지만 좋은 데모가 될 수 있습니다.
제프리 리히터 (Jeffery Richter)에게이 책을 기증해야합니다. 훌륭한 책 CLR via C#
에 있습니다.
유일한 단점은 시간 손실입니다. – Dialecticus
"강제 수집"으로 GC.Collect()를 호출하면됩니다. 왜 그렇게 위험하다고 생각하니? 제가 그리워 한 문서가 있습니까? (나는 요즘을 유지할 수 없기 때문에 가능성이 높다는 것을 알고 있습니다.) – David
실시간 요구 사항이있는 긴밀한 타이머가있을 수 있습니까? – leppie