Model/QueueTimer.cs

(开头部分) 6KB

这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。

using System;
using System.Collections.Generic;
using System.Text;
using System.Runtime.InteropServices;
using System.Threading;

namespace CustomTimers.Model
{
    public class QueueTimer : IDisposable, IPrimitiveTimer
    {
        //-----------------------------------------------
        // PInvoke methods and struct
        //-----------------------------------------------
        public delegate void WaitOrTimerDelegate (
            IntPtr Parameter, Int32 TimerOrWaitFired);

        public enum WtFlags
        {
            WT_EXECUTEDEFAULT = 0x00000000,
            WT_EXECUTEINTIMERTHREAD = 0x00000020,
            WT_EXECUTEINIOTHREAD = 0x00000001,
            WT_EXECUTEINPERSISTENTTHREAD = 0x00000080,
            WT_EXECUTELONGFUNCTION = 0x00000010,
            WT_EXECUTEONLYONCE = 0x00000008,
            WT_TRANSFER_IMPERSONATION = 0x00000100
        };

        [DllImport ("kernel32.dll")]
        static extern IntPtr CreateTimerQueue ();

        [DllImport ("kernel32.dll")]
        static extern bool CreateTimerQueueTimer (
            out IntPtr phNewTimer, IntPtr TimerQueue,
            WaitOrTimerDelegate Callback, IntPtr Parameter, uint DueTime,
            uint Interval, uint Flags);

        [DllImport ("kernel32.dll")]
        static extern bool ChangeTimerQueueTimer (
            IntPtr TimerQueue, IntPtr Timer, uint DueTime, uint Interval);

        [DllImport ("kernel32.dll")]
        static extern bool DeleteTimerQueueTimer (
            IntPtr TimerQueue, IntPtr Timer, IntPtr CompletionEvent);

        [DllImport ("kernel32.dll")]
        static extern bool DeleteTimerQueueEx (
            IntPtr TimerQueue, IntPtr CompletionEvent);

        

        //-----------------------------------------------
        // Private data members
        //-----------------------------------------------
        private IntPtr _HTimerQueue = IntPtr.Zero;
        private IntPtr _HQueueTimer = IntPtr.Zero;
        // Track whether Dispose has been called.
        private bool _IsDisposed = false;
        private WaitOrTimerDelegate _WaitOrTimerDelegate;
        private double _Interval = 1000.0;

后面还有 134 行代码,解锁后查看完整代码

24 小时内免费解锁 3 个项目,之后 1 积分/个。 规则说明

AI 解读

登录后可用,每次 10 积分,解读结果公开显示在下面。

还没有人解读过这个文件。