2013-04-23 3 views
0

배경 : 현실적인 동작을 추가하려는 시도로서 차량 동력학을위한 개발이 있습니다. 계산 결과는 실생활에 1 : 1 비율로 실시간으로 수행됩니다. 즉 실제 결과에서 1 초 = 컴퓨팅 결과에서 1 초.Windows에서 Silverlight 5로 Thread.Sleep이 작동하지 않습니다. 8

문제 : Windows XP/Vista/7 및 심지어 MacOS에서는 모든 것이 예상대로 작동하지만 Windows 8에서는 응용 프로그램이 정확히 2 배 느리게 실행됩니다. 1 시간 비율

상세 : 1 맞도록 필요한 지연들은 계산

System.Threading.Thread.Sleep((Int32)time_delta) 

인 TIME_DELTA에 의해 수행된다.

Windows 8에서 실제 생활에서 1 초가 소요되는 시간은 2 초입니다. 그러나 time_delta/2.0f를 사용할 수는 있지만 더러운 트릭처럼 보입니다.

질문 : 해결할 적절한 방법이 있습니까?

참고 문헌 : 나는 검색하고이 문제를보고있는 것 같다 발견 이 Missing .NET features in Metro style application?

이 링크 http://msdn.microsoft.com/en-us/library/d00bd51t.aspx를 말한다 Thread.sleep를 사전에 감사

윈도우 8에서 지원됩니다.


업데이트 : 내가 잘못했다, 윈도우 8 지연이 정확히 2 배 느린이, 수면()의 해상도는 극적으로 변화 한 것으로 보인다 (적어도 내 테스트에서) 그래서, 매우 변수 오프셋을 감지 할 때마다 실시간 조정을 사용하여 끝났지 만 약간의 CPU가 집중적으로 작동하지만 지금은 작동 중입니다.

+0

d'Sleep (1000)'이 실제로 2,000ms 걸리는 것을 확인할 수 있습니까? 아니면 좀 더 작은 잠을 자고있는 프로그램입니까? 예를 들어'Sleep (7)'은'Sleep'의 해상도가 밀리 세컨드 레벨이 아니기 때문에 15ms가 걸릴 수 있습니다. –

+0

@JimMischel Small 잠깐 여기저기서 문제가있는 것처럼 보입니다. 나는 하나의 GUI에서 모든 지연을 얻는 것에 대해 생각하고 있습니다. GUI가 실시간으로 업데이트 될 때 동기화되지 않는지 먼저 살펴 봅니다. . 테스트 후 업데이트됩니다. – nxgtrturbo

답변

0

Int32 대신 TimeSpan (예 : TimeSpan.FromSeconds (time_delta))을 사용하려고 했습니까?

+0

그 이유는 무엇입니까? –

+0

@Boluc 아무런 차이가 없으므로 Sleep() 해상도로 축소되었습니다. – nxgtrturbo

관련 문제