Click here to Skip to main content
15,881,709 members
Home / Discussions / C / C++ / MFC
   

C / C++ / MFC

 
AnswerRe: Help with threads Pin
Chuck O'Toole6-Sep-12 15:46
Chuck O'Toole6-Sep-12 15:46 
GeneralRe: Help with threads Pin
Albert Holguin7-Sep-12 3:54
professionalAlbert Holguin7-Sep-12 3:54 
QuestionRe: Help with threads Pin
AndrewG12315-Sep-12 9:55
AndrewG12315-Sep-12 9:55 
AnswerRe: Help with threads Pin
David Crow6-Sep-12 5:41
David Crow6-Sep-12 5:41 
QuestionRe: Help with threads Pin
AndrewG123111-Sep-12 11:33
AndrewG123111-Sep-12 11:33 
QuestionRe: Help with threads Pin
David Crow12-Sep-12 2:45
David Crow12-Sep-12 2:45 
GeneralRe: Help with threads Pin
AndrewG123112-Sep-12 6:21
AndrewG123112-Sep-12 6:21 
SuggestionRe: Help with threads Pin
David Crow12-Sep-12 8:17
David Crow12-Sep-12 8:17 
Look this over. It's from memory and completly untested so there may be a few small details left out, but it should give you good idea of how primary and secondary threads communicate.

BEGIN_MESSAGE_MAP(CMyDialog, CDiaog)
    ON_BN_CLICKED(IDC_BUTTON, OnClick)
END_MESSAGE_MAP()

void CMyDialog::Acq_Data( void )
{
    while (1)
    {
        // if a STOP event has been signaled [m_pEventStopRequested.SetEvent()]
        if (WaitForSingleObject(m_pEventStopRequested->m_hObject, 0U) == WAIT_OBJECT_0)
        {
            // let OnClick() know that the secondary thread is not running
            m_pEventThreadDone->SetEvent();
            
            return;
        }
        else
            ADCdbInquire(...); // this functon can post messages back to the primary thread
    }
}

/* static */ UINT CMyDialog::Acq_Data( LPVOID lpVoid )
{
    CMyDialog *pDlg = (CMyDialog *) lpVoid;

    pDlg->Acq_Data();

    // once here, the secondary thread is done so post a message
    // back to the primary thread to tell it to enable the button

    return 0;
}

// put these in CMyDialog
CWinThread *m_pThread = NULL;
CEvent *m_pEventStopRequested = new CEvent(FALSE, TRUE); // stop requested (initially no)?
CEvent *m_pEventThreadDone = new CEvent(TRUE, TRUE);     // thread done (initially yes)?

void CMyDialog::OnClick() 
{
    // if the secondary thread is not running
    if (WaitForSingleObject(m_pEventThreadDone->m_hObject, 0U) == WAIT_OBJECT_0)
    {
        // at this point, you could disable the button that
        // started this so that it could not be clicked again

        // set the STOP and DONE events to nonsignaled (haven't happened yet)
        m_pEventStopRequested->ResetEvent();
        m_pEventThreadDone->ResetEvent();

        // start the secondary thread
        m_pThread = AfxBeginThread(Acq_Data, this, THREAD_PRIORITY_HIGHEST);
    }
}

"One man's wage rise is another man's price increase." - Harold Wilson

"Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons

"Show me a community that obeys the Ten Commandments and I'll show you a less crowded prison system." - Anonymous



modified 13-Sep-12 9:44am.

QuestionRe: Help with threads Pin
AndrewG123112-Sep-12 14:21
AndrewG123112-Sep-12 14:21 
AnswerRe: Help with threads Pin
David Crow13-Sep-12 3:47
David Crow13-Sep-12 3:47 
GeneralRe: Help with threads Pin
AndrewG123113-Sep-12 7:46
AndrewG123113-Sep-12 7:46 
GeneralRe: Help with threads Pin
David Crow13-Sep-12 7:55
David Crow13-Sep-12 7:55 
GeneralRe: Help with threads Pin
AndrewG123113-Sep-12 8:54
AndrewG123113-Sep-12 8:54 
QuestionRe: Help with threads Pin
David Crow13-Sep-12 9:32
David Crow13-Sep-12 9:32 
AnswerRe: Help with threads Pin
AndrewG123127-Sep-12 12:02
AndrewG123127-Sep-12 12:02 
GeneralRe: Help with threads Pin
David Crow28-Sep-12 2:13
David Crow28-Sep-12 2:13 
GeneralRe: Help with threads Pin
Albert Holguin5-Sep-12 12:22
professionalAlbert Holguin5-Sep-12 12:22 
QuestionStructure containing byte[1] as member variable Pin
Rahul from Poona4-Sep-12 8:45
Rahul from Poona4-Sep-12 8:45 
AnswerRe: Structure containing byte[1] as member variable Pin
Chris Losinger4-Sep-12 8:59
professionalChris Losinger4-Sep-12 8:59 
GeneralRe: Structure containing byte[1] as member variable Pin
jschell4-Sep-12 11:32
jschell4-Sep-12 11:32 
GeneralRe: Structure containing byte[1] as member variable Pin
Chris Losinger4-Sep-12 11:42
professionalChris Losinger4-Sep-12 11:42 
GeneralRe: Structure containing byte[1] as member variable Pin
jschell5-Sep-12 11:28
jschell5-Sep-12 11:28 
GeneralRe: Structure containing byte[1] as member variable Pin
Chris Losinger5-Sep-12 11:51
professionalChris Losinger5-Sep-12 11:51 
GeneralRe: Structure containing byte[1] as member variable Pin
jschell6-Sep-12 8:31
jschell6-Sep-12 8:31 
GeneralRe: Structure containing byte[1] as member variable Pin
Chris Losinger6-Sep-12 9:19
professionalChris Losinger6-Sep-12 9:19 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.