Si può provare questo:
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);
}
e usarlo in questo modo:
WinApi.TimeBeginPeriod(1);
E per tornare a come era:
WinApi.TimeEndPeriod(1);
fonte
2013-02-25 16:21:34
Credo la risoluzione del timer è limitato su alcune architetture (cioè non puoi semplicemente abbassarlo). [Here] (http://msdn.microsoft.com/en-us/magazine/cc163996.aspx) è un articolo su come implementare il proprio timer ad alta risoluzione per Windows (con esempio di codice). – NominSim
@NominSim hai letto l'articolo "Ottenere e impostare la risoluzione del timer" nella domanda? – javapowered
Sì. Se leggi l'articolo a cui ti ho collegato, spiega come la risoluzione è limitata in base all'architettura. Puoi ottenere una risoluzione migliore, ma ci sono dei compromessi che devi fare anche tu. (Non puoi semplicemente impostare una risoluzione arbitraria senza il potenziale di perdere un po 'di precisione). – NominSim