Condividi tramite


Protezione dei thread

La classe Regex è thread-safe e non modificabile, ovvero in sola lettura. In altre parole, gli oggetti Regex possono essere creati in qualsiasi thread e condivisi da thread diversi. I metodi di corrispondenza possono essere chiamati da qualsiasi thread e non modificano mai alcuno stato globale.

È tuttavia necessario utilizzare gli oggetti restituiti da Regex (Match e MatchCollection) in un singolo thread. Sebbene molti di questi oggetti siano immutabili dal punto di vista logico, le relative implementazioni possono ritardare il calcolo di alcuni risultati per migliorare le prestazioni ed è quindi necessario che i chiamanti vi accedano serialmente.

Se è necessario condividere gli oggetti dei risultati di Regex in più thread, sarà possibile convertire tali oggetti in istanze thread-safe chiamando i relativi metodi sincronizzati. Fatta eccezione per gli enumeratori, tutte le classi di espressioni regolari sono thread-safe o possono essere convertite in oggetti thread-safe da un metodo sincronizzato.

Gli enumeratori rappresentano l'unica eccezione. È necessario che un'applicazione serializzi le chiamate agli enumeratori di insiemi. Se un'insieme può essere enumerato in più thread contemporaneamente, sarà necessario sincronizzare i metodi dell'enumeratore all'oggetto principale dell'insieme enumerato.

Vedere anche

Altre risorse

Espressioni regolari di .NET Framework