Você está offline; aguardando reconexão
Entrar

Não há suporte para seu navegador

Você precisa atualizar seu navegador para usar o site.

Atualize para a versão mais recente do Internet Explorer

O conjunto de trabalho de um aplicativo é cortado quando sua janela de nível superior é minimizada

IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.

Clique aqui para ver a versão em Inglês deste artigo: 293215
Sintomas
Quando estiver minimizada janela de nível superior do aplicativo através do comando Minimizar no seu menu de sistema ou um clique no respectivo botão Minimizar , o sistema operacional será aparar o conjunto de trabalho para o processo. Isso é feito para liberar mais memória RAM para aplicativos de primeiro plano. Como resultado dessa restrição, um processo pode enfrentar desempenho é significativamente inferior porque estão sendo falha suas páginas de memória RAM de volta.
Mais Informações
Se um aplicativo minimiza a janela de nível superior programaticamente chamando a API ShowWindow() com o comando SW_MINIMIZE, o conjunto de trabalho do processo será cortado. No entanto, o trabalho definido será não ser cortado quando a janela está minimizada programaticamente por meio do uso de ShowWindow() com o comando SW_SHOWMINIMIZED.

O conjunto de trabalho de um processo é o conjunto de páginas de memória visíveis no momento para o processo na RAM física. O acesso a essa memória é muito rápido porque as páginas são residentes e disponíveis para um aplicativo para usar sem acionar uma falha de página.

Um processo pode aparar explicitamente seu próprio trabalho conjunto chamando a API SetProcessWorkingSetSize() passando "-1" para o dwMinimumWorkingSetSize e dwMaximumWorkingSetSize parâmetros. Isso é basicamente como o sistema apara o processo quando sua janela de nível superior é minimizada. Isso não significa que as páginas de memória usadas pelo processo são descartadas imediatamente da RAM. Na verdade, essas páginas podem permanecer residentes por bastante tempo. Eles simplesmente são sinalizados para que o sistema pode usá-las para outros processos conforme necessário. Isso é significativamente mais rápido que espera no algoritmo de remoção padrão do sistema.

Quando uma janela está minimizada através do comando Minimizar no seu menu de sistema ou no botão Minimizar , a janela é enviada uma mensagem WM_SYSCOMMAND com o comando SC_MINIMIZE. Se o procedimento de janela passar essa mensagem no procedimento de janela padrão do sistema por DefWindowProc() chamada, o procedimento padrão tratará a mensagem por chamada ShowWindow() com o comando SW_MINIMIZE. Como mencionado anteriormente, isso fará com que o processo de trabalho definido para ser cortado.

Você pode escrever um aplicativo que pode ser minimizado sem ter que seu conjunto de trabalho cortado. Para fazer isso, o procedimento de janela para a janela de nível superior deve interceptar a mensagem WM_SYSCOMMAND e responder ao comando SC_MINIMIZE por chamada ShowWindow() diretamente com o comando SW_SHOWMINIMIZED. Ele não deve passar o comando SC_MINIMIZE para DefWindowProc().

Código de exemplo

O código a seguir demonstra como gravar um procedimento de janela que intercepta a mensagem WM_SYSCOMMAND para ignorar o procedimento de janela padrão e impedir que o conjunto de trabalho do processo que está sendo cortada:
LRESULT CALLBACK WndProc (HWND hWnd, UINT iMsg, WPARAM wParam,       LPARAM lParam) {   switch (iMsg) {      case WM_SYSCOMMAND:         if (wParam == SC_MINIMIZE) {            // programmatically minimize the window            ShowWindow(hWnd, SW_SHOWMINIMIZED);            // do not pass the minimize command on to the system's            // default window procedure            return 0;         }         // allow other system commands to be passed on to the         // default window procedure         break;       // handle other window messages here...      case WM_WHATEVER:         break;   }   return DefWindowProc(hWnd, iMsg, wParam, lParam);}				

Aviso: este artigo foi traduzido automaticamente

Propriedades

ID do Artigo: 293215 - Última Revisão: 11/21/2006 15:36:05 - Revisão: 5.1

  • Interface de Programação de Aplicativos do Microsoft Win32
  • kbmt kbapi kbkernbase kbmemory kbprb KB293215 KbMtpt
Comentários
+ (window.location.protocol) + "//c.microsoft.com/ms.js'><\/script>");