나는 내 심장 박동 률 (beat/minute)로 Console.Beep
을 생성하기로되어있는 타이머를 가지고있다. 내 C# 타이머에 Timer.Interval
을 계산하기 위해 다음과 같은 간단한 공식을 사용하고 있습니다 : 나는 착용에서 내 심장 박동을 읽고있다타이머 간격을 재설정하지 않고 변경할 수 있습니까?
ServerVarValues = new ws ServerVarValues();
this.timerHeartBeatSound = new System.Windows.Forms.Timer(this.components);
public class ServerVarValues
{
public int HR;
public DateTime LastHRUpdate;
public int SpO2;
public DateTime LastO2Update;
public double Temperature;
public DateTime LastTempUpdate;
}
//... I plug in my heart rate to calculate my new timer interval...
int tVal = (int)Math.Round((ws.HR/60.0) * 1000,0);
timerHeartBeatSound.Interval = tVal;
// and with the new interval, the timer generates a Tick Event that runs this
private void PlayHeartBeatSound(object sender, EventArgs e)
{
Console.Beep();
}
. 문제는 내 HR이 변경 될 때마다 타이머의 간격을 변경할 때 타이머가 재설정된다는 것입니다. 따라서, 나는 종종 딸꾹질을 부드럽게 변화하는 심박동 소리 대신에 들었다.
심장 박동 수가 바뀔 때마다 타이머를 재설정하는 것을 피하는 방법에 대한 아이디어가 있습니까?
.NET에는 여러 가지 타이머 클래스가 있습니다. 물론 어느 쪽을 사용하든간에 항상 요금 변경을 수용 할 수 있습니다. 어떤 타이머 클래스는 다른 타이머 클래스보다 더 잘 적용됩니다. 컨텍스트에 따라 실제 타이머 대신 루프에서 'Task.Delay()'를 사용하는 것이 더 바람직 할 수 있습니다. 새로운 데이터를 수신 할 때 비동기 적으로 지연 값을 업데이트합니다. 당신이하고 싶은 것을 정확히 보여주는 좋은 [mcve]를 제공하고 문제를 해결하는 데 어려움을 겪고있는 특정 문제를 재현하십시오. –
안녕하세요 피터 - 코드는 실제로 볼 수 있습니다. 저는 비주얼 스튜디오에서 타이머를 설정하고, 타이머 간격을두고 그것을 가능하게합니다. 틱 이벤트에서 Console.Beep을 호출합니다. 내가 싫어하는 것은 타이머를 재설정하기 위해 심박수가 변하기 때문에 시간 간격을 변경할 때마다입니다. 내 생각에 비주얼 스튜디오 타이머가 이상적인 것이 아니라 다른 클래스를 봐야한다는 사실을 암시하는 것 같습니다. – LeoM
_ "코드가 실제로 표시됩니다"_ - 정말요? _anything_을 추가하지 않고 위에서 보여준 프로그램을 컴파일 할 수 있습니까? 'tVal' 또는'timerHeartBeatSound' 변수 나'ws'의 선언이 아니라 코드를 포함하는'class'와 메소드 선언에 신경 쓰지 않으시겠습니까? 앞서 언급 한 [mcve] 기사를 읽으십시오. 그 페이지의 맨 아래에 링크 된 기사를 포함하여 (심지어 특히) [ask]를보십시오. 스택 오버플로에 대한 도움이 필요하면 좋은 질문을 올리는 방법을 배워야합니다. 당신은 지금 당장 그렇게하지 않습니다. –