.NET 타이머:무슨 최고의 방법을 통 X 초?
-
02-07-2019 - |
문제
한 두 가지가 아닌 비 되풀이하는 이벤트 발생 X 초부터 지금과 같은 제한 시간.직관적으로 만들 것을 만들기 시스템입니다.타이머가 있습니다.타이머 설정 간격 X*1000,철사 그 진드기 이벤트를 시작합니다.이 non-반복 이벤트 및 당신은 단지 그것을 원하 제기되면 다음을 중지해야 타이머 후 틱.
는 사실 타이머는 본질적으로 반복되 그러나 저를 심는 경우에 이것은 실제로 가장 좋은 방법이 하고 있습니다.나을 것이/더 많은 정확/안전한 시간을 절약하기 위해 시작된 세트 타이머를 체크하는 모든 두 번째는(또는 밀리초)에 틱 설문 조사에 대한 시스템시간 및 수동으로 대상을 높이기 위해 이벤트를 한 번만 필요한 시간이 경과?
할 수 있는 사람에 무게 되는 경우 가장 좋은 방법(아마도 다른 옵션이 있습니다 내가 생각하지 않도).는 방법 중 하나는보다 더 나은 다른 경우는 기간 내가 기다릴 필요가 밀리초 단위로 측정됩?
해결책
이 생성자 에 대한 시스템입니다.Threading.타이머을 지정할 수 있습니다 기간.는 경우에 당신은 이 매개 변수를 설정 -1,비활성화됩니다 주기적 신호만을 실행 한다.
public Timer(
TimerCallback callback,
Object state,
TimeSpan dueTime,
TimeSpan period
)
다른 팁
사용 일반 타이머 사용을 중지한 후에는 경과된다.해야 하는 문제를 해결합니다.
모두,시스템입니다.threading.타이머 시스템입니다.타이머가 있습니다.타이머는 이것을 지원합니다.
스 새로운 BackgroundWorker,수면,가깝습니다.
var worker = new BackgroundWorker();
worker.DoWork += delegate {
Thread.Sleep(30000);
DoStuff();
}
worker.RunWorkerAsync();
당신이 사용할 수 있는 시스템입니다.타이머가 있습니다.타이머와 AutoReset=true,또는 시스템입니다.Threading.타이머의 무한한 기간(시스템입니다.Threading.시간을 초과했습니다.무한=-1)를 실행하는 타이머 한다.
어느 경우에,당신은 당신의 처분을 때 당신이 그것으로 마친(에서의 이벤트 처리기 타이머가 있습니다.타이머 콜백한 Threading.타이머)있지 않으면 반복되는 간격.
단지 설정을 체크한 후 X 초고의 코드에 체크,하:
타이머입니다.사용 가능=false;
나를 위해 일했습니다.
당신이 원하는 경우 정확한 시간을 측정하는 고려해야 합니다 두배로 하는 타이머 주파수를 사용하여 날짜/시간입니다.지금 비교하기 위해 시작 시간입니다.타이머 스레드가 있습니다.잠이 없는 반드시 정확한에서 자신의 시간을 측정합니다.