Bạn có thể thử này:
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);
}
Và sử dụng nó như thế này:
WinApi.TimeBeginPeriod(1);
Và để trở lại như thế nào đó là:
WinApi.TimeEndPeriod(1);
Nguồn
2013-02-25 16:21:34
Tôi tin rằng giờ giải quyết được hạn chế về kiến trúc nhất định (ví dụ: bạn không thể chỉ đặt nó thấp hơn). [Ở đây] (http://msdn.microsoft.com/en-us/magazine/cc163996.aspx) là một bài viết về cách triển khai bộ đếm thời gian có độ phân giải cao của riêng bạn cho Windows (với ví dụ về mã). – NominSim
@NominSim bạn đã đọc bài viết "Thu thập và đặt Độ phân giải hẹn giờ" được đề cập trong câu hỏi chưa? – javapowered
Có. Nếu bạn đọc bài viết tôi đã liên kết đến, nó giải thích cách độ phân giải bị giới hạn theo kiến trúc. Bạn có thể nhận được độ phân giải tốt hơn, nhưng có những thỏa hiệp mà bạn phải thực hiện là tốt. (Bạn không thể chỉ thiết lập độ phân giải tùy ý mà không bị mất một số độ chính xác). – NominSim