Set kerja aplikasi dipangkas ketika jendela top-level yang diminimalkan

Terjemahan Artikel Terjemahan Artikel
ID Artikel: 293215 - Melihat produk di mana artikel ini berlaku.
Perbesar semua | Perkecil semua

Pada Halaman ini

GEJALA

Ketika sebuah aplikasi top-level jendela diminimalkan melalui Meminimalkan perintah dari yang Sistem menu atau klik pada yang Meminimalkan tombol, sistem operasi akan memangkas set bekerja untuk proses. Hal ini dilakukan untuk membebaskan RAM untuk aplikasi latar depan. Sebagai hasil dari pemangkasan ini, proses mungkin mengalami kinerja secara signifikan miskin karena halaman memori menyalahkan kembali ke RAM.

INFORMASI LEBIH LANJUT

Jika sebuah aplikasi meminimalkan jendela yang top-level pemrograman dengan menelepon ShowWindow() API dengan perintah SW_MINIMIZE, set bekerja proses akan dipotong. Namun, kerja ditetapkan akan tidak dipotong ketika jendela pemrograman diminimalkan melalui penggunaan dari ShowWindow() dengan perintah SW_SHOWMINIMIZED.

Set bekerja proses adalah rangkaian memori halaman saat ini terlihat untuk proses fisik RAM. Akses ke memori ini sangat cepat karena halaman penduduk dan tersedia untuk aplikasi menggunakan tanpa memicu kesalahan halaman.

Proses secara eksplisit dapat memangkas bekerja sendiri diatur dengan menelepon SetProcessWorkingSetSize() API sementara lewat "1" untuk kedua dwMinimumWorkingSetSize dan dwMaximumWorkingSetSize parameter. Ini pada dasarnya adalah bagaimana sistem trims proses ketika jendela top-level yang diminimalkan. Ini tidak berarti bahwa halaman memori yang digunakan oleh proses segera dibuang dari RAM. Pada kenyataannya, Halaman ini mungkin tetap penduduk cukup lama. Mereka hanya ditandai sehingga sistem dapat menggunakannya untuk proses lainnya yang diperlukan. Hal ini secara signifikan lebih cepat daripada menunggu sistem standar pemangkasan algoritma.

Ketika jendela diminimalkan melalui Meminimalkan perintah dari yang Sistem menu atau Meminimalkan tombol, jendela dikirim pesan WM_SYSCOMMAND dengan perintah SC_MINIMIZE. Jika prosedur jendela lewat pesan ini ke sistem default jendela prosedur menelepon DefWindowProc(), prosedur standar akan menangani pesan dengan menelepon ShowWindow() dengan perintah SW_MINIMIZE. Sebagaimana dinyatakan sebelumnya, ini akan menyebabkan proses bekerja untuk dipotong.

Anda dapat menulis aplikasi yang dapat diminimalkan tanpa yang bekerja set dipangkas. Untuk melakukannya, prosedur jendela untuk jendela top-level harus mencegat pesan WM_SYSCOMMAND dan menanggapi perintah SC_MINIMIZE oleh ShowWindow() panggilan langsung dengan perintah SW_SHOWMINIMIZED. Itu tidak harus lulus perintah SC_MINIMIZE ke DefWindowProc().

Contoh kode

Kode berikut menunjukkan bagaimana menulis sebuah jendela prosedur yang penyadapan WM_SYSCOMMAND pesan untuk melewati prosedur jendela default dan mencegah proses bekerja set dari yang dipangkas:
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);
}
				

Properti

ID Artikel: 293215 - Kajian Terakhir: 23 September 2011 - Revisi: 2.0
Berlaku bagi:
  • Microsoft Win32 Application Programming Interface
Kata kunci: 
kbapi kbkernbase kbmemory kbprb kbmt KB293215 KbMtid
Penerjemahan Mesin
PENTING: Artikel ini diterjemahkan menggunakan perangkat lunak mesin penerjemah Microsoft dan bukan oleh seorang penerjemah. Microsoft menawarkan artikel yang diterjemahkan oleh seorang penerjemah maupun artikel yang diterjemahkan menggunakan mesin sehingga Anda akan memiliki akses ke seluruh artikel baru yang diterbitkan di Pangkalan Pengetahuan (Knowledge Base) dalam bahasa yang Anda gunakan. Namun, artikel yang diterjemahkan menggunakan mesin tidak selalu sempurna. Artikel tersebut mungkin memiliki kesalahan kosa kata, sintaksis, atau tata bahasa, hampir sama seperti orang asing yang berbicara dalam bahasa Anda. Microsoft tidak bertanggung jawab terhadap akurasi, kesalahan atau kerusakan yang disebabkan karena kesalahan penerjemahan konten atau penggunaannya oleh para pelanggan. Microsoft juga sering memperbarui perangkat lunak mesin penerjemah.
Klik disini untuk melihat versi Inggris dari artikel ini:293215

Berikan Masukan

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com