Come inviare un elemento di lavoro al pool di thread utilizzando C#

Traduzione articoli Traduzione articoli
Identificativo articolo: 315460 - Visualizza i prodotti a cui si riferisce l?articolo.
Espandi tutto | Chiudi tutto

In questa pagina

Sommario

In questo articolo viene illustrato come inviare un metodo per il pool di thread per l'esecuzione.

Ogni processo nell'ambiente. NET, dispone di un pool di thread che è possibile utilizzare per eseguire metodi in modo asincrono.

Requisiti


Nell'elenco seguente sono indicati hardware, software, infrastruttura di rete e i service pack necessari:
  • Microsoft Visual Studio .NET o Microsoft Visual Studio 2005
In questo articolo si presume la conoscenza dei seguenti argomenti:
  • Visual C# linguaggio di programmazione

Creare una Visual applicazione C# che utilizza il pool di thread

  1. Avviare Microsoft Visual Studio .NET o Microsoft Visual Studio 2005.
  2. Creare un nuovo progetto applicazione Windows di Visual C# denominato PoolDemo.
  3. Utilizzare la casella degli strumenti per aggiungere un controllo Button al form. Il nome di predefinito per il controllo Button è button1.
  4. Fare clic con il pulsante destro del mouse il modulo e quindi fare clic su Visualizza codice .
  5. Incollare la seguente direttiva using dopo le direttive using esistente, ma prima della dichiarazione dello spazio dei nomi PoolDemo :
    using System.Threading;
    					
  6. Tornare alla visualizzazione struttura e quindi fare doppio clic su button1 . Incollare il codice seguente nel gestore eventi Button1_Click :
    private void button1_Click(object sender, System.EventArgs e)
    {
    	WaitCallback wcb = new WaitCallback(GetSysDirSize);
    	try
    	{
    		ThreadPool.QueueUserWorkItem(wcb);
    		MessageBox.Show("The work item has been placed on the queue");
    	}
    	catch (Exception ex)
    	{
    		MessageBox.Show("Error: " + ex.Message);
    	}
    }
    					
  7. Incollare il codice seguente all'interno del corpo della classe Form1 . Il metodo di GetSysDirSize calcola il numero totale di byte che vengono archiviati nella directory di sistema. GetSysDirSize chiama un altro metodo denominato DirSize per eseguire il calcolo.

    Nota : questa operazione potrebbe richiedere alcuni tempo eseguire.
    private void GetSysDirSize(object state)
    {
    	long total_length = DirSize(Environment.SystemDirectory);
    	this.Text = total_length.ToString();
    }
    
    private long DirSize(string path)
    {
    	long sz = 0;
    	System.IO.DirectoryInfo d = new System.IO.DirectoryInfo(path);
    	
    	// List files.
    	foreach(System.IO.FileInfo f in d.GetFiles())
    	{
    		sz += f.Length;
    	}
    
    	// Recurse into directories.
    	foreach(System.IO.DirectoryInfo dx in d.GetDirectories())
    	{
    		sz += DirSize(dx.FullName);
    	}
    
    	return sz;
    }
    					

Test dell'esempio

  1. Premere CTRL+F5 per eseguire l'applicazione.
  2. Quando viene visualizzato il form, fare clic sul pulsante. La finestra di messaggio che l'elemento di lavoro è stato inserito in coda progetti fare clic OK per chiudere la finestra di messaggio e tornare al form principale. Dopo alcuni istanti, la dimensione di totale di file nella directory di sistema viene visualizzata nella didascalia del form. La lunghezza del ritardo dipende dalla velocità del computer e il numero di file nella directory di sistema. Il calcolo della dimensione dei file avviene su un thread nel pool di thread.

Proprietà

Identificativo articolo: 315460 - Ultima modifica: lunedì 11 dicembre 2006 - Revisione: 2.3
Le informazioni in questo articolo si applicano a:
  • Microsoft Visual C# 2005 Express Edition
  • Microsoft Visual C# .NET 2002 Standard Edition
Chiavi: 
kbmt kbhowtomaster kbsample kbthread KB315460 KbMtit
Traduzione automatica articoli
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: 315460
LE INFORMAZIONI CONTENUTE NELLA MICROSOFT KNOWLEDGE BASE SONO FORNITE SENZA GARANZIA DI ALCUN TIPO, IMPLICITA OD ESPLICITA, COMPRESA QUELLA RIGUARDO ALLA COMMERCIALIZZAZIONE E/O COMPATIBILITA' IN IMPIEGHI PARTICOLARI. L'UTENTE SI ASSUME L'INTERA RESPONSABILITA' PER L'UTILIZZO DI QUESTE INFORMAZIONI. IN NESSUN CASO MICROSOFT CORPORATION E I SUOI FORNITORI SI RENDONO RESPONSABILI PER DANNI DIRETTI, INDIRETTI O ACCIDENTALI CHE POSSANO PROVOCARE PERDITA DI DENARO O DI DATI, ANCHE SE MICROSOFT O I SUOI FORNITORI FOSSERO STATI AVVISATI. IL DOCUMENTO PUO' ESSERE COPIATO E DISTRIBUITO ALLE SEGUENTI CONDIZIONI: 1) IL TESTO DEVE ESSERE COPIATO INTEGRALMENTE E TUTTE LE PAGINE DEVONO ESSERE INCLUSE. 2) I PROGRAMMI SE PRESENTI, DEVONO ESSERE COPIATI SENZA MODIFICHE, 3) IL DOCUMENTO DEVE ESSERE DISTRIBUITO INTERAMENTE IN OGNI SUA PARTE. 4) IL DOCUMENTO NON PUO' ESSERE DISTRIBUITO A SCOPO DI LUCRO.

Invia suggerimenti

 

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