Compact Framework를 사용하는 데이터 수집기 용 소프트웨어를 개발합니다.CF의 타이머가 틱하지 않음
내가 호출하는 모든 메서드에 대한 검사를 수행하고 있으며이 메서드가 수행하는 데 걸리는 시간을 계산합니다. 이 시간이 1 분 이상이면 예외를 던질 것입니다. 나는 이것을 가지고있다 :
public static TResult Call<TResult>(Func<TResult> closure)
{
int ellapsedSeconds = 0;
Timer timer = new Timer { Interval = 1000, Enabled = true };
timer.Tick += delegate
{
ellapsedSeconds++;
if (ellapsedSeconds < 60) return;
timer.Enabled = false;
throw new Exception(@"TimeOut Error Again!");
};
try
{
TResult result = closure.Invoke();
timer.Enabled = false;
return result;
}
catch (Exception)
{
timer.Enabled = false;
throw;
}
}
나는 다른 방법으로 점검 할 수 있음을 알고 있지만 이것을 바꾸려하지 않는다. 내가 안에 문제 도메인을 올렸지 만, 실제로는 Timer
은 틱 이벤트를 발생시키지 않습니다. 데스크톱 응용 프로그램과 마찬가지로 .Start()
또는 .Stop()
이라는 확장 방법이 없습니다. timer.Enabled = true;
은 틱 (tick)을 시작하지 않습니다. 에 찾는 위치 :
어떻게 컴팩트 프레임 워크와 타이머를 시작할 수 있습니까?
UI 스레드를 차단하고 있습니까? –
타이머는 메서드에 대해 로컬입니다. 똑딱 거리기를 생각하기 전에 GC'd가 될 것입니다. –
정말 방법에 국한됩니다. 정적 클래스이기 때문에 전역 멤버로 적용 할 수 없습니다. –