Exemplo n.º 1
0
        /// <summary>
        /// Start
        /// </summary>
        /// <param name="milliseconds"></param>
        /// <param name="dueTimeInMilliseconds"></param>
        public void Start(uint milliseconds, uint dueTimeInMilliseconds)
        {
            //Werte übernehmen
            m_Milliseconds = milliseconds;

            //QueueTimer Auflösung ermitteln
            global::WinSound.Win32.TimeCaps tc = new global::WinSound.Win32.TimeCaps();
            global::WinSound.Win32.TimeGetDevCaps(ref tc, (uint)Marshal.SizeOf(typeof(global::WinSound.Win32.TimeCaps)));
            m_ResolutionInMilliseconds = Math.Max(tc.wPeriodMin, 0);

            //QueueTimer Resolution setzen
            global::WinSound.Win32.TimeBeginPeriod(m_ResolutionInMilliseconds);

            //QueueTimer Queue erstellen
            m_HandleTimerQueue   = global::WinSound.Win32.CreateTimerQueue();
            m_GCHandleTimerQueue = GCHandle.Alloc(m_HandleTimerQueue);

            //Versuche QueueTimer zu starten
            bool resultCreate = global::WinSound.Win32.CreateTimerQueueTimer(out m_HandleTimer, m_HandleTimerQueue, m_DelegateTimerProc, IntPtr.Zero, dueTimeInMilliseconds, m_Milliseconds, global::WinSound.Win32.WT_EXECUTEINTIMERTHREAD);

            if (resultCreate)
            {
                //Handle im Speicher halten
                m_GCHandleTimer = GCHandle.Alloc(m_HandleTimer, GCHandleType.Pinned);
                //QueueTimer ist gestartet
                m_IsRunning = true;
            }
        }
Exemplo n.º 2
0
        /// <summary>
        /// ResetResolution
        /// </summary>
        public static void ResetResolution()
        {
            //QueueTimer Auflösung ermitteln
            global::WinSound.Win32.TimeCaps tc = new global::WinSound.Win32.TimeCaps();
            global::WinSound.Win32.TimeGetDevCaps(ref tc, (uint)Marshal.SizeOf(typeof(global::WinSound.Win32.TimeCaps)));
            uint resolution = Math.Max(tc.wPeriodMin, 0);

            //QueueTimer Resolution deaktivieren
            global::WinSound.Win32.TimeBeginPeriod(resolution);
        }
Exemplo n.º 3
0
        /// <summary>
        /// Start
        /// </summary>
        /// <param name="milliseconds"></param>
        /// <param name="dueTimeInMilliseconds"></param>
        public void Start(uint milliseconds, uint dueTimeInMilliseconds)
        {
            //Werte übernehmen
            m_Milliseconds = milliseconds;

            //Timer Auflösung ermitteln
            global::WinSound.Win32.TimeCaps tc = new global::WinSound.Win32.TimeCaps();
            global::WinSound.Win32.TimeGetDevCaps(ref tc, (uint)Marshal.SizeOf(typeof(global::WinSound.Win32.TimeCaps)));
            m_ResolutionInMilliseconds = Math.Max(tc.wPeriodMin, 0);

            //Timer Resolution setzen
            global::WinSound.Win32.TimeBeginPeriod(m_ResolutionInMilliseconds);

            //Versuche EventTimer zu starten
            m_TimerId = global::WinSound.Win32.TimeSetEvent(m_Milliseconds, m_ResolutionInMilliseconds, m_DelegateTimeEvent, ref m_UserData, (UInt32)Win32.TIME_PERIODIC);
            if (m_TimerId > 0)
            {
                //Handle im Speicher halten
                m_GCHandleTimer = GCHandle.Alloc(m_TimerId, GCHandleType.Pinned);
                //QueueTimer ist gestartet
                m_IsRunning = true;
            }
        }