Το σύνολο εργασίας μιας εφαρμογής έχει αποκοπεί, όταν είναι ελαχιστοποιημένο το παράθυρο ανώτατου επιπέδου

Μεταφράσεις άρθρων Μεταφράσεις άρθρων
Αναγν. άρθρου: 293215 - Δείτε τα προϊόντα στα οποία αναφέρεται το συγκεκριμένο άρθρο.
Ανάπτυξη όλων | Σύμπτυξη όλων

Σε αυτήν τη σελίδα

Συμπτώματα

Όταν μια εφαρμογή του ανώτατου επιπέδου είναι ελαχιστοποιημένο παράθυρο μέσω τουΕλαχιστοποίησηεντολή από τοSYSTEMμενού ή ένα κλικ από τοΕλαχιστοποίησητο κουμπί, το λειτουργικό σύστημα αποκόψτε το σύνολο της εργασίας για τη διαδικασία. Αυτό γίνεται για να ελευθερώσετε μνήμη RAM για εφαρμογές προσκηνίου. Ως αποτέλεσμα της ρύθμισης αυτής, μια διαδικασία ενδέχεται να αντιμετωπίσετε σημαντικά χαμηλότερες επιδόσεις, επειδή είναι να παρουσιάσει σφάλμα των σελίδων μνήμης ξανά στη μνήμη RAM.

Περισσότερες πληροφορίες

Εάν μια εφαρμογή Ελαχιστοποιεί το παράθυρο ανώτατου επιπέδου της μέσω προγραμματισμού από την κλήση του API ShowWindow() με την εντολή SW_MINIMIZE, το σύνολο της διαδικασίας θα να αποκοπεί. Ωστόσο, θα το σύνολο εργασιώνNotνα αποκοπεί, όταν το παράθυρο είναι ελαχιστοποιημένο με προγραμματισμό μέσω της χρήσης ShowWindow() με την εντολή SW_SHOWMINIMIZED.

Το σύνολο εργασίας μιας διεργασίας είναι το σύνολο των σελίδων μνήμης αυτήν τη στιγμή ορατές στη διαδικασία στη φυσική μνήμη RAM. Είναι πολύ γρήγορη πρόσβαση σε αυτήν τη μνήμη, επειδή οι σελίδες είναι μόνιμες και διαθέσιμες για μια εφαρμογή να χρησιμοποιήσει χωρίς ενεργοποίηση σφάλμα σελίδας.

Μια διαδικασία ρητά να αποκόψετε το δικό της εργασίας ορίζεται από την κλήση του API SetProcessWorkingSetSize() κατά τη διαβίβαση "-1" και για τις δύο τοdwMinimumWorkingSetSizeANDdwMaximumWorkingSetSizeΠαράμετροι. Αυτό ουσιαστικά είναι πως το σύστημα περικόπτει τη διαδικασία όταν το παράθυρο ανώτατου επιπέδου είναι ελαχιστοποιημένο. Αυτό δεν σημαίνει ότι απορρίπτονται αμέσως τις σελίδες μνήμης που χρησιμοποιείται από τη διεργασία από τη μνήμη RAM. Στην πραγματικότητα, αυτές οι σελίδες ενδέχεται να παραμείνουν μόνιμες για αρκετά λεπτά. Αυτά επισημαίνονται απλώς έτσι ώστε το σύστημα να τους χρησιμοποιήσετε για άλλες διαδικασίες όπως είναι απαραίτητο. Αυτό είναι σημαντικά ταχύτερο από αναμονή στον αλγόριθμο τυπικό ρύθμισης του συστήματος.

Όταν ένα παράθυρο είναι ελαχιστοποιημένο μέσω τουΕλαχιστοποίησηεντολή από τοSYSTEMμενού ή τοΕλαχιστοποίησηκουμπί, το παράθυρο αποστέλλεται ένα μήνυμα WM_SYSCOMMAND με την εντολή SC_MINIMIZE. Εάν η διαδικασία παραθύρου μεταβιβάζει αυτού του μηνύματος στη διαδικασία παραθύρου προεπιλογή του συστήματος από DefWindowProc() κλήσης, η προεπιλεγμένη διαδικασία θα χειριστεί το μήνυμα από ShowWindow() κλήσης με την εντολή SW_MINIMIZE. Όπως αναφέρθηκε παραπάνω, αυτό θα προκαλέσει τη διαδικασία λειτουργεί για να αποκοπεί σύνολο.

Μπορείτε να γράψετε μια εφαρμογή που μπορεί να ελαχιστοποιηθεί χωρίς το σύνολο εργασιών που έχει αποκοπεί. Για να το κάνετε αυτό, η διαδικασία παράθυρο παράθυρο ανώτατου επιπέδου πρέπει να υποκλέψει το μήνυμα WM_SYSCOMMAND και να αποκριθεί στην εντολή SC_MINIMIZE από ShowWindow() καλώντας απευθείας με την εντολή SW_SHOWMINIMIZED. Αυτό δεν πρέπει να περάσει την εντολή SC_MINIMIZE με DefWindowProc().

Δείγμα κώδικα

Ο ακόλουθος κώδικας περιγράφει τον τρόπο για να γράψετε μια διαδικασία παραθύρου που διακόπτει το μήνυμα WM_SYSCOMMAND για να παρακάμψετε την προεπιλεγμένη διαδικασία παραθύρου και εμποδίζει τη διαδικασία λειτουργεί από την αποκοπεί:
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);
}
				

Ιδιότητες

Αναγν. άρθρου: 293215 - Τελευταία αναθεώρηση: Κυριακή, 19 Δεκεμβρίου 2010 - Αναθεώρηση: 2.0
Οι πληροφορίες σε αυτό το άρθρο ισχύουν για:
  • Microsoft Win32 Application Programming Interface
Λέξεις-κλειδιά: 
kbapi kbkernbase kbmemory kbprb kbmt KB293215 KbMtel
Μηχανικά μεταφρασμένο
ΣΗΜΑΝΤΙΚΟ: Αυτό το άρθρο είναι προϊόν λογισμικού μηχανικής μετάφρασης της Microsoft και όχι ανθρώπινης μετάφρασης. Η Microsoft σάς προσφέρει άρθρα που είναι προϊόντα ανθρώπινης αλλά και μηχανικής μετάφρασης έτσι ώστε να έχετε πρόσβαση σε όλα τα άρθρα της Γνωσιακής Βάσης μας στη δική σας γλώσσα. Ωστόσο, ένα άρθρο που έχει προκύψει από μηχανική μετάφραση δεν είναι πάντα άριστης ποιότητας. Ενδέχεται να περιέχει λεξιλογικά, συντακτικά ή γραμματικά λάθη, όπως ακριβώς τα λάθη που θα έκανε ένας μη φυσικός ομιλητής επιχειρώντας να μιλήσει τη γλώσσα σας. Η Microsoft δεν φέρει καμία ευθύνη για τυχόν ανακρίβειες, σφάλματα ή ζημίες που προκύψουν λόγω τυχόν παρερμηνειών στη μετάφραση του περιεχομένου ή χρήσης του από τους πελάτες της. Επίσης, η Microsoft πραγματοποιεί συχνά ενημερώσεις στο λογισμικό μηχανικής μετάφρασης.
Η αγγλική έκδοση αυτού του άρθρου είναι η ακόλουθη:293215

Αποστολή σχολίων

 

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