Come modificare la priorità del processo di un'applicazione che utilizza shell con Visual FoxPro

Il presente articolo è stato tradotto tramite il software di traduzione automatica di Microsoft e non da una persona. Microsoft offre sia articoli tradotti da persone fisiche sia articoli tradotti automaticamente da un software, in modo da rendere disponibili tutti gli articoli presenti nella nostra Knowledge Base nella lingua madre dell’utente. Tuttavia, un articolo tradotto in modo automatico non è sempre perfetto. Potrebbe contenere errori di sintassi, di grammatica o di utilizzo dei vocaboli, più o meno allo stesso modo di come una persona straniera potrebbe commettere degli errori parlando una lingua che non è la sua. Microsoft non è responsabile di alcuna imprecisione, errore o danno cagionato da qualsiasi traduzione non corretta dei contenuti o dell’utilizzo degli stessi fatto dai propri clienti. Microsoft, inoltre, aggiorna frequentemente il software di traduzione automatica.

Clicca qui per visualizzare la versione originale in inglese dell’articolo: 193846
Sommario
Priorità di un processo determina la modalità di programmazione l'esecuzione dal kernel di Win32. Eseguire più processi con priorità più bassa rapidamente di processi con priorità più alta. In questo articolo viene descritto come modificare la priorità di processo di un'applicazione che utilizza shell.
Informazioni
Win32 supporta le classi di quattro priorità riportate di seguito:
  • Inattivo
  • Normale
  • Alta
  • In tempo reale
Inattività è la priorità corretta per applicazioni di monitoraggio del sistema o gli screen saver.

Impostazione predefinita, che indica un processo senza speciali esigenze di pianificazione è di classe di priorità normale.

Priorità alta indica un processo che esegue attività urgenti che richiedono l'esecuzione immediata perché possa funzionare correttamente. I thread di un processo con priorità alta classe superano i thread dei processi di classe di priorità normale o inattiva. Un esempio è l'elenco di attività di Windows, che deve rispondere rapidamente quando chiamato dall'utente, indipendentemente dal carico sul sistema operativo. Utilizzare estrema attenzione quando si utilizza la classe a priorità alta, poiché una classe a priorità alta CPU applicazione può utilizzare disponibili in quasi tutti i cicli.

La priorità in tempo reale indica un processo con priorità più alta possibile. I thread di un processo di classe di priorità in tempo reale superano i thread di tutti gli altri processi, inclusi processi del sistema operativo importanti operazioni. Ad esempio, un processo in tempo reale eseguito per più di un intervallo molto breve può causare delle cache del disco non implica lo svuotamento o causare il mouse per essere non risponde. Questo livello di priorità quasi mai deve essere utilizzato.

Priorità del processo è impostata per l'assegnazione di uno dei parametri della chiamata API CreateProcess.

Nell'esempio seguente di seguito viene illustrato l'esecuzione dell'applicazione Windows NOTEPAD in Windows NT 4.0 e nei sistemi operativi Windows successivi utilizzando una priorità idle. La priorità del processo viene controllata mediante la variabile 'dwCreationFlags' passata a CreateProcess(). DEFINEs per le quattro classi di priorità supportati sono elencati nella parte superiore del programma di esempio.

Una volta Notepad.exe è in esecuzione, per esaminare la priorità, avviare Windows Task Manager, selezionare la scheda processi, fare clic con il pulsante destro del mouse su Notepad.exe selezionare Imposta priorità dal menu a comparsa.

Il percorso completo a Notepad.exe potrebbe essere necessario modifica nell'istruzione di assegnazione di variabile 'File2Run'.

Codice di esempio

   #DEFINE NORMAL_PRIORITY_CLASS 32   #DEFINE IDLE_PRIORITY_CLASS 64   #DEFINE HIGH_PRIORITY_CLASS 128   #DEFINE REALTIME_PRIORITY_CLASS 1600   DECLARE INTEGER CreateProcess IN kernel32.DLL ;      INTEGER lpApplicationName, ;      STRING lpCommandLine, ;      INTEGER lpProcessAttributes, ;      INTEGER lpThreadAttributes, ;      INTEGER bInheritHandles, ;      INTEGER dwCreationFlags, ;      INTEGER lpEnvironment, ;      INTEGER lpCurrentDirectory, ;      STRING @lpStartupInfo, ;      STRING @lpProcessInformation   DECLARE INTEGER GetLastError IN kernel32.DLL   * Startup info is 68 bytes, of which we need to   * initially populate the 'cb' or Count of Bytes member   * with the overall length of the structure.   * The remainder should be 0-filled.   START = long2str(68) + REPLICATE(CHR(0), 64)   * PROCESS_INFORMATION structure is 4 longs,   * or 4*4 bytes = 16 bytes, which we'll initially zero.   process_info = REPLICATE(CHR(0), 16)   * Start a copy of NOTEPAD (EXE name must be null-terminated)   File2Run = "C:\WINNT\NOTEPAD.EXE" + CHR(0)   * Call CreateProcess, obtain a process handle. Treat the   * application to run as the 'command line' argument, accept   * all other defaults. Important to pass the start and   * process_info by reference.   RetCode = CreateProcess(0, File2Run, 0, 0, 1, ;      IDLE_PRIORITY_CLASS, 0, 0, @START, @process_info)   * Unable to run, exit now.   IF RetCode = 0      =MESSAGEBOX("Error occurred. Error code: ", GetLastError())      RETURN   ENDIF   ********************   FUNCTION long2str   ********************   * passed : 32-bit non-negative numeric value (m.longval)   * returns : ascii character representation of passed   *    value in low-high format (m.retstr)   * example :   *   m.long = 999999   *   m.longstr = long2str(m.long)   PARAMETERS m.longval   PRIVATE i, m.retstr   m.retstr = ""   FOR i = 24 TO 0 STEP -8      m.retstr = CHR(INT(m.longval/(2^i))) + m.retstr      m.longval = MOD(m.longval, (2^i))   NEXT   RETURN m.retstr						
Riferimenti
"Windows avanzate", le pagine di Jeffrey Richter, Microsoft Press, 92-103, Third Edition 1997 ISBN: 1-57231-548-2
kbVFp600 kbAPI

Avviso: questo articolo è stato tradotto automaticamente

Proprietà

ID articolo: 193846 - Ultima revisione: 01/27/2005 08:34:21 - Revisione: 3.4

Microsoft Visual FoxPro 3.0b Standard Edition, Microsoft Visual FoxPro 5.0 Standard Edition, Microsoft Visual FoxPro 5.0a, Microsoft Visual FoxPro 6.0 Professional Edition, Microsoft Visual FoxPro 7.0 Professional Edition, Microsoft Visual FoxPro 8.0 Professional Edition, Microsoft Visual FoxPro 9.0 Professional Edition

  • kbmt kbhowto KB193846 KbMtit
Feedback