Można spróbować to:
public static class WinApi
{
/// <summary>TimeBeginPeriod(). See the Windows API documentation for details.</summary>
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Interoperability", "CA1401:PInvokesShouldNotBeVisible"), System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Security", "CA2118:ReviewSuppressUnmanagedCodeSecurityUsage"), SuppressUnmanagedCodeSecurity]
[DllImport("winmm.dll", EntryPoint="timeBeginPeriod", SetLastError=true)]
public static extern uint TimeBeginPeriod(uint uMilliseconds);
/// <summary>TimeEndPeriod(). See the Windows API documentation for details.</summary>
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Interoperability", "CA1401:PInvokesShouldNotBeVisible"), System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Security", "CA2118:ReviewSuppressUnmanagedCodeSecurityUsage"), SuppressUnmanagedCodeSecurity]
[DllImport("winmm.dll", EntryPoint="timeEndPeriod", SetLastError=true)]
public static extern uint TimeEndPeriod(uint uMilliseconds);
}
i używać go tak:
WinApi.TimeBeginPeriod(1);
I wrócić do tego, jak to było:
WinApi.TimeEndPeriod(1);
wierzę rozdzielczości zegara jest ograniczony w określonych architekturach (tj nie możesz po prostu ustawić go niżej). [Tutaj] (http://msdn.microsoft.com/en-us/magazine/cc163996.aspx) jest artykułem o tym, jak zaimplementować swój własny zegar o wysokiej rozdzielczości dla Windows (z przykładem kodu). – NominSim
@NominSim Czy przeczytałeś artykuł "Otrzymywanie i ustawianie rozdzielczości czasomierza" w pytaniu? – javapowered
Tak. Jeśli przeczytasz artykuł, do którego się przyłączyłem, wyjaśniam, w jaki sposób rozdzielczość jest ograniczona zgodnie z architekturą. Możesz uzyskać lepszą rozdzielczość, ale są też kompromisy, które musisz wykonać. (Nie możesz po prostu ustawić arbitralnej rozdzielczości bez utraty dokładności). – NominSim