2012-07-26 2 views
0

하는 방법을 실행 개체를 파괴하지 않고. 이 작업을 수행하는 가장 좋은 방법은 무엇입니까? (즉, 가장 안전하고 모범 사례)정기적으로 객체 인스턴스

답변

2

확실히 Timer을 사용할 수 있습니다. 타이머의 콜백은 DoWork를 호출 할 수 있습니다.

타이머를 개체의 비공개 필드로 사용하십시오. 오브젝트가 인스턴스화 될 때이를 인스턴스화하고 시작하십시오.

개체에 IDisposable을 구현하고 개체를 처분 할 때 반드시 타이머를 처리해야합니다.

+0

좋아, 나는 이것을보고 있었지만 그것이 일반적인 방법이라고 확신하지 못했습니다. –

1

응용 프로그램에서 MyTask 및 타이머의 클래스 수준 인스턴스를 만듭니다. 타이머의 경과 이벤트에서 원하는 메서드를 호출하십시오. 나는 이것과 비슷한 것을 할 것이다 :

using System.Timers; 
using System.Threading; 

class Program 
{ 
    static MyTask taskInstance = new MyTask(); 
    static ManualResetEventSlim cancelEvent = new ManualResetEventSlim(false); 

    static void Main() 
    {  
     var timer = new Timer 
     { 
      AutoReset = true, 
      Interval = 1000 
     }; 
     timer.Elapsed += (x, y) => taskInstance.DoWork(); 
     cancelEvent.Wait(); 
    } 
} 

이것은 완전하지 않거나 테스트되지 않았 음을 명심해라. 그러나 그것은 내가 간다고 생각한다. 응용 프로그램을 중지해야 할 때마다 (사용자 입력 등으로 인해) cancelEvent.Set();을 호출하십시오.

관련 문제