Thread.Suspend er blevet afskaffet. Brug venligst andre klasser i System.Threading, såsom Monitor, Mutex, Event og Semaphore, for at synkronisere tråde eller beskytte ressourcer. Hyperlink-login er synlig. Tråd.CV er blevet forældet. Brug venligst andre klasser i System.Threading, såsom Monitor, Mutex, Event og Semaphore, for at synkronisere tråde eller beskytte ressourcer. Hyperlink-login er synlig. Hvis tråden vil pause eller fortsætte, har jeg brugt de to metoder Suspend og Genoptag før, og bruger disse to metoder til at styre tråden, hvilket faktisk er problematisk, og jeg var ligeglad med det dengang, så lad os tage det frem og studere det i dag!
Hvad er problemet med at bruge de to ovenstående metoder til at suspendere og fortsætte tråde?
For eksempel, hvis vi kalder Suspend-metoden for at suspendere tråden, og derefter straks kalder Resume-metoden for at fortsætte den suspenderede tråd, kan der opstå et problem.
For efter du kalder Suspend-metoden for at suspendere tråden, kan tråden ikke blive suspenderet med det samme, her tager det behandlingstid, på dette tidspunkt kalder du straks Resume-metoden for at fortsætte den suspenderede tråd, og programmet vil straks hænge!
Microsofts forklaring er:
Brug ikke metoderne Suspend og Genoptag til at synkronisere trådaktivitet. Er der en måde at vide, hvilken kode der er, når du sætter eksekveringen af tråden på pause? Hvis du holder en lås under evaluering af sikkerhedsprivilegier, kan andre tråde i din suspenderede tråd i AppDomain blive blokeret. Hvis du suspenderer andre tråde i AppDomain under udførelsen af klassekonstruktøren, blokeres forsøg på at bruge klassen. Dødvande kan nemt opstå.
// Resumé: Fortsæt den suspenderede tråd. // Anomali: T:System.Threading.ThreadStateException: Tråden er ikke startet, død eller i en ventende tilstand. // T:System.Security.SecurityException: Kalderen har ikke de korrekte System.Security.Permissions.SecurityPermissions. [Forældet("Tråd.CV er blevet udfaset. Brug venligst andre klasser i System.Threading, såsom Monitor, Mutex, Event og Semaphore, for at synkronisere tråde eller beskytte ressourcer. Hyperlink-login er synlig.", falsk)] [SecuritySafeCritical] offentlig tomrum CV(); Hvordan løser man dette problem?
ManualResetEvent-klassen
Underret en eller flere ventende tråde om, at en hændelse er indtruffet. Sådanne typer kan ikke arves.
Testkoden er som følger:
|