Thread.Suspend è stato deprecato. Si prega di utilizzare altre classi in System.Threading, come Monitor, Mutex, Event e Semaphore, per sincronizzare i Thread o proteggere le risorse. Il login del link ipertestuale è visibile. Thread.Resume è stato deprecato. Si prega di utilizzare altre classi in System.Threading, come Monitor, Mutex, Event e Semaphore, per sincronizzare i Thread o proteggere le risorse. Il login del link ipertestuale è visibile. Se il thread vuole mettere in pausa o continuare, ho già usato i due metodi di Sospensione e Riprendi, e ho usato questi due metodi per gestire il thread, il che in realtà è problematico, e all'epoca non mi importava, quindi togliamola e studiamola oggi!
Qual è il problema nell'usare i due metodi sopra sopra per sospendere e continuare i thread?
Ad esempio, se chiamiamo il metodo Suspend per sospendere il thread, e poi chiamiamo immediatamente il metodo Resume per continuare il thread sospeso, allora potrebbe esserci un problema.
Perché, dopo aver chiamato il metodo Suspend per sospendere il thread, il thread potrebbe non essere sospeso immediatamente, qui ci vuole tempo di elaborazione, a questo punto chiami immediatamente il metodo Resume per continuare il thread sospeso, e il programma si bloccherà immediatamente!
La spiegazione di Microsoft è:
Non utilizzare i metodi Suspend e Resume per sincronizzare l'attività dei thread. C'è un modo per sapere cos'è il codice quando metti in pausa l'esecuzione del thread? Se si tiene un blocco durante la valutazione dei privilegi di sicurezza, altri thread nel thread sospeso in AppDomain potrebbero essere bloccati. Se sospendi altri thread nell'AppDomain durante l'esecuzione del costruttore di classe, i tentativi di utilizzo della classe vengono bloccati. Gli stalli possono verificarsi facilmente.
// Sommario: Continua con il filo sospeso. // Anomalia: T:System.Threading.ThreadStateException: Il thread non è stato avviato, morto o non è in stato di attesa. // T:System.Security.SecurityException: Il chiamante non possiede il corretto. Permessi.Sicurezza.Permessi.Sicurezza. [Obsoleto("Thread.Resume è stato deprecato. Si prega di utilizzare altre classi in System.Threading, come Monitor, Mutex, Event e Semaphore, per sincronizzare i Thread o proteggere le risorse. Il login del link ipertestuale è visibile.", falso)] [SicurezzaCriticaSicurezzaCritica] Curriculum di vuoto pubblico (); Come risolvere questo problema?
Classe ManualResetEvent
Notifica uno o più thread in attesa che si è verificato un evento. Tali tipi non possono essere ereditati.
Il codice di prova è il seguente:
|