Example #1
0
        /// <summary>
        /// ThreadMainStartup - Start RAPI connection.
        /// </summary>
        private void ThreadMainStartup()
        {
            // Allocate structure for call to CeRapiInitEx
            Rapi.RAPIINIT ri = new Rapi.RAPIINIT();
            ri.cbSize = Marshal.SizeOf(ri);

            // Call init function
            int hr = Rapi.CeRapiInitEx(ref ri);

            // Wrap event handle in corresponding .NET object
            ManualResetEvent mrev = new ManualResetEvent(false);

            mrev.Handle = ri.heRapiInit;

            // Wait five seconds, then fail.
            if (mrev.WaitOne(5000, false) && ri.hrRapiInit == Rapi.S_OK)
            {
                // Notify caller that connection established.
                itReason = INVOKE_STARTUP.STARTUP_SUCCESS;
                m_ctlInvokeTarget.Invoke(m_deleCallback);
            }
            else
            {
                // On failure, disconnect from RAPI.
                Rapi.CeRapiUninit();

                strBuffer = "Timeout - no device present.";
                itReason  = INVOKE_STARTUP.STATUS_MESSAGE;
                m_ctlInvokeTarget.Invoke(m_deleCallback);

                // Notify caller that connection failed.
                itReason = INVOKE_STARTUP.STARTUP_FAILED;
                m_ctlInvokeTarget.Invoke(m_deleCallback);
            }
        }