안녕하세요 .
Thread.Sleep 함수 관련 질문드립니다.
-- 아래의 소스는 버튼을 눌렀을때 패널이 지정된 위치까지 좌측 또는 우측으로 움직이는 스레드를 구현한 내용입니다.
그런데 개발용 PC 에서는 SlidPanel이 약 1초만에 움직였다면 , 테스트용 PC에서는 약 4초의 시간이 걸립니다. (테스트용 PC가 성능은 더 좋은 상태)
TickCount 계산을 통한 Delta time 으로 차이를 구현해보려 했으나 , 두 PC 환경에서 스레드 Tick간 차이는 동일
private void move()
{
while (Moving)
{
SlidePanel.BeginInvoke(new Action(() =>
{
if (SlideDirection == 0) // Left
{
SlidePanel.Left -= 4;
if (SlidePanel.Left <= SystemSettingbtn.Left)
{
SlidePanel.Left = SystemSettingbtn.Left;
SystemPanel.BeginInvoke(new Action(() =>
{
SystemPanel.BringToFront();
}));
Moving = false;
}
}
else // Right
{
SlidePanel.Left += 4;
if (SlidePanel.Left >= EnvSettingbtn.Left)
{
SlidePanel.Left = EnvSettingbtn.Left;
EnvironmnetPanel.BeginInvoke(new Action(() =>
{
EnvironmnetPanel.BringToFront();
}));
Moving = false;
}
}
}));
Thread.Sleep(1);
}
}
--- > await Task.Delay(1) 를 이용하면 두 PC환경에서 동일 한 시간이 걸리는 것을 확인 했지만
Thread.Sleep(1)이 더 좋은 환경에서 느려지는게 좀 이해가 안됩니다.
[최초 등록일: ]
[최종 수정일: 2/4/2021]