2017-10-09 13 views
-1

여기 흥미로운 상황이 있습니다. 언어는 Visual Studio를 사용하는 C#입니다.C# 루프 oneshot 함수

나는 계속해서 돌아갈 함수 루프를 가지고있다.

특정 이벤트가 트리거되면 IF 문을 사용하여 함수를 호출해야합니다.

이 기능을 특정 시간 지연으로 다시 호출 할 수있는 방법이 있습니까?

예를 들어 함수 A가 호출됩니다 .... 함수 A는 다음 20 초 후에 다시 호출 할 수 없습니다.

20 초 후에 IF 문이 있으면 함수 A를 다시 호출 할 수 있습니다.

나는 휴대폰을 문자 메시지로 보내는 기능을 가지고 있습니다. 현재 내 루프는 초고속이어서 문자 메시지는 몇 초 안에 20 번과 같이 문자 메시지를 전송합니다. 나는 이것을 제한하고 싶다. 다른 루프를 통과하게하려면 while 루프가 이벤트 트리거를 가질 수 없습니다.

주기를 계속 실행하려면 루프가 필요하지만 특정 시간이 지나기 전까지는 해당 기능을 건너 뜁니다.

+1

코드에서이 작업을 시도해보십시오. 그것의 완벽한 초보 작업. –

+0

문제는 제가 처음에 설명한 것보다 조금 더 깊은 것 같아요. 함수 A를 트리거하는 이벤트는 루프의 시작 부분에 있습니다. 그래서 루프의 시작 부분에 도달 할 때까지 단순히 INT 할당을 사용했다면이 int는 리셋됩니다. 내 코드에는 민감한 정보가 있으므로 단순히 복사하여 붙여 넣기가 어렵습니다. 나는 주로 .Tick 명령어 또는 무엇인가를 통해 이것을 처리 할 수있는 내장 라이브러리를 찾고 있었다. – Busta

+1

if 문과 함께 하나의 루프가 있었고 거기에 대해서는 민감하거나 복잡한 것이 없었다. 'TimeSpan'과'if (ts.ElapsedMilliSeconds> delay) Function();을 사용하십시오. –

답변

1

사용 타이머 :

Timer myTimer = new Timer(); 
myTimer.Interval = 200; //double timer interval in ms 
myTimer.Elapsed += myTimer_Elapsed; 
myTimer.Start(); 

그런 다음 myTimer_Elapsed 내부에 기능을 넣어 :이 myTimer.Stop를 사용

void myTimer_Elapsed(object sender, System.Timers.ElapsedEventArgs e) 
    { 
     your_function(); 
    } 

정지();

+0

이 대답으로 문제가 해결 된 경우 친절하게 답을 표시하십시오. 감사. –