public void StartHandshakeAsync() { m_AsyncHandshakeResult = eAsyncHandshakeResult.Waiting; m_AsyncHandshakeStartTimeAsync = DateTime.Now; SendHandshakeRequest(); if (m_FaultyFlag) { m_AsyncHandshakeResult = eAsyncHandshakeResult.Failed; return; } else { Thread th = (new Thread(new ThreadStart(AsyncHandshakeWorkerThread))); th.Name = "Async Handshake"; th.Start(); } }
/// <summary> /// a thread to do the handshake /// </summary> private void AsyncHandshakeWorkerThread() { TimeSpan dtWait = TimeSpan.FromSeconds(10); while (!m_FaultyFlag) { if (m_dtLastHandshake != null) { m_AsyncHandshakeResult = eAsyncHandshakeResult.Success; return; } if (DateTime.Now - m_AsyncHandshakeStartTimeAsync > dtWait) { m_AsyncHandshakeResult = eAsyncHandshakeResult.NoResponse; return; } } m_AsyncHandshakeResult = eAsyncHandshakeResult.Failed; }