Compartilhar via


Exemplo do MTRECALC: Oferece suporte a aplicativos com vários threads

O exemplo MTRECALC ilustra MFC suporte para aplicativos com vários threads.

MFC distingue dois tipos de segmentos: threads de interface de usuário e segmentos de trabalho.Uma interface de usuário thread tem sua própria mensagem bomba para manipular eventos de interface de usuário separadamente de outros s thread.Um thread de trabalho não possui seu próprio bomba de mensagem.MTRECALC ilustra um thread de trabalho.O thread de trabalho simula um cálculo extenso por aguardando um cronômetro antes de concluir o cálculo de adicionar dois números.

Observação de segurança:

Este código de exemplo é fornecido para ilustrar um conceito e não deve ser usado em aplicativos ou sites da Web, pois ele não pode ilustrar sistema autônomo práticas de codificação mais seguras.Microsoft sistema autônomo sumes nenhuma responsabilidade por danos incidentais ou conseqüenciais deve o código de exemplo ser usado para fins diferentes de sistema autônomo se destina.

Para obter exemplos e instruções para instalá-los:

  • Sobre o Visual Studio Ajuda menu, clicar Exemplos.

    Para obter mais informações, consulte Localizando arquivos de exemplo.

  • A versão mais recente e a lista completa das Exemplos está disponível online a partir de O Visual Studio 2008 Exemplos página.

  • Você também pode localizar exemplos no disco rígido do seu computador.Por padrão, exemplos e um arquivo Leiame são copiados para uma pasta sob \programa Files\Visual Studio 9.0\Samples\.Para edições Express do Visual Studio, todos os exemplos estão localizados online.

Criando e executando o exemplo

Para criar e executar a amostra MTRECALC

  1. Abra a solução MtRecalc.sln.

  2. Sobre o Compilação menu, clicar Compilação.

  3. No menu Debug, clique em Start Without Debugging.

MTRECALC exibe um formulário simples para adicionar dois inteiros, simulando uma planilha recalcula sempre que você atualização uma célula ou clicar Recalcular Agora.O campo resultado exibe "Recalcular..." durante o time que MTRECALC está simulando um cálculo longo.Você pode alterar o time de recálculo clicando em Velocidade do recálculo on the Demonstração menu.

clicar Thread de trabalho or Thread único on the Demonstração menu comparar "funcionalidade" de recálculo em um thread de trabalho separado em vez de recálculo no mesmo thread de thread da interface do usuário principal do aplicativo.Por exemplo, demonstração thread único, você não pode acessar os menus de MTRECALC enquanto é recálculo, mas na demonstração thread de trabalho, você pode.Demonstração de thread único, não é possível atualização qualquer um dos campos de número inteiro enquanto MTRECALC é o recálculo, mas na demonstração thread de trabalho, você pode.Se você atualizar um campo enquanto o thread de trabalho já é o recálculo, o recálculo ativo irá ser abandonado e um novo iniciado.

The Eliminar thread de trabalho comando a Demonstração menu é ativado somente enquanto o thread de trabalho é o recálculo.Se você usar o Eliminar thread de trabalho comando para interromper o recálculo antes que seja concluído, em seguida, o campo de resultados exibe um ponto de interrogação ("?").Você pode reiniciar o cálculo com os Recalcular Agoracomando .

Se você tentar salvar o documento MTRECALC antes de recálculo tiver concluído, você será solicitado com "Deseja aguardar enquanto o recálculo termina?" Se você responder com Sim, MTRECALC exibe uma ampulheta enquanto aguarda o recálculo seja concluída antes de salvar o documento.Exercitar nesta demonstração, você provavelmente precisará usar o Velocidade do recálculo comando para aumentar o time de recálculo do padrão de 5 segundos para 10 ou 15 segundos.Isso dará a você time suficiente para percorrer o Arquivo menu and Salvar caixa de diálogo.

Palavras-chave

Este exemplo demonstra as seguintes palavras-chave:

AfxBeginThread; AfxGetMainWnd; AfxMessageBox; CArchive::IsStoring; CCmdTarget::BeginWaitCursor; CCmdTarget::EndWaitCursor; CCmdUI::Enable; CCmdUI::SetCheck; CDialog::DoModal; CDocument::GetFirstViewPosition; CDocument::GetNextView; CDocument::OnNewDocument; CDocument::OnSaveDocument; CDocument::SetModifiedFlag; CDocument::UpdateAllViews; CFrameWnd::criar; CFrameWnd::DockControlBar; CFrameWnd::EnableDocking; CFrameWnd::LoadFrame; CObject::AssertValid; CObject::despejo; CObject::Serialize; CStatusBar::CommandToIndex; CStatusBar::SetPaneText; CString::Format; CString::LoadString; CView::DoPreparePrinting; CView::GetDocument; CView::OnBeginPrinting; CView::OnEndPrinting; CView::OnPreparePrinting; CView::OnPrint; CView::OnUpdate; CWinApp::AddDocTemplate; CWinApp::EnableShellOpen; CWinApp::InitInstance; CWinApp::LoadStdProfileSettings; CWinApp::RegisterShellFileTypes; CWnd::DoDataExchange; CWnd::OnCreate; CWnd::OnKillFocus; CWnd::PostMessage; CWnd::SendMessage; CWnd::SetWindowText; CWnd::ShowWindow; CWnd::UpdateData; CWnd::UpdateWindow; CreateEvent; DragAcceptFiles; GetExitCodeThread; GetVersion; LoadBitmap; PostMessage; ResetEvent; SetEvent; suspensão; WaitForSingleObject

Observação:

Alguns exemplos, sistema autônomo esta, não foram modificados para refletir sistema autônomo alterações nos assistentes, bibliotecas e compilador Visual C++, mas ainda Demonstre sistema autônomo concluir a tarefa desejada.

Consulte também

Outros recursos

Exemplos do MFC