Denne artikkelen er en speilartikkel om maskinoversettelse, vennligst klikk her for å hoppe til originalartikkelen.

Utsikt: 29278|Svare: 2

[Kilde] .net/c# Trådtråd Suspend og gjenoppta utdaterte løsninger

[Kopier lenke]
Publisert på 17.05.2018 09:36:10 | | | |
Thread.Suspend er foreldet.  Vennligst bruk andre klasser i System.Threading, som Monitor, Mutex, Event og Semaphore, for å synkronisere tråder eller beskytte ressurser.  Innloggingen med hyperkoblingen er synlig.
Tråd.CV er utdatert.  Vennligst bruk andre klasser i System.Threading, som Monitor, Mutex, Event og Semaphore, for å synkronisere tråder eller beskytte ressurser.  Innloggingen med hyperkoblingen er synlig.
Hvis tråden vil pause eller fortsette, har jeg brukt de to metodene Suspend og Resume før, og bruker disse to metodene for å operere tråden, noe som faktisk er problematisk, og jeg brydde meg ikke om det da, så la oss ta det frem og studere det i dag!

Hva er problemet med å bruke de to metodene ovenfor for å suspendere og fortsette tråder?

For eksempel, hvis vi kaller Suspend-metoden for å suspendere tråden, og deretter umiddelbart kaller Resume-metoden for å fortsette den suspenderte tråden, kan det oppstå et problem.

For etter at du kaller Suspend-metoden for å suspendere tråden, kan tråden ikke suspenderes umiddelbart, her tar det behandlingstid, på dette tidspunktet kaller du umiddelbart Resume-metoden for å fortsette den suspenderte tråden, og programmet vil henge umiddelbart!

Microsofts forklaring er:


Ikke bruk metodene Suspend og Resume for å synkronisere trådaktivitet. Finnes det en måte å vite hva koden er når du pauser kjøringen av tråden? Hvis du holder en lås under evaluering av sikkerhetsprivilegier, kan andre tråder i den suspenderte tråden i AppDomain bli blokkert. Hvis du suspenderer andre tråder i AppDomain når du kjører klassekonstruktøren, blokkeres forsøk på å bruke klassen. Fastlåste situasjoner kan lett oppstå.

//
        Sammendrag:
        Fortsett den suspenderte tråden.
        //
        Anomali:
        T:System.Threading.ThreadStateException:
        Tråden er ikke startet, død eller i en ventende tilstand.
        //
        T:System.Security.SecurityException:
        Anroperen har ikke riktig System.Security.Permissions.SecurityPermission.
        [Utdatert("Tråd.Resume er utdatert.  Vennligst bruk andre klasser i System.Threading, som Monitor, Mutex, Event og Semaphore, for å synkronisere tråder eller beskytte ressurser.  Innloggingen med hyperkoblingen er synlig.", falsk)]
        [SecuritySafeCritical]
        offentlig tomrom CV();

Hvordan løse dette problemet?



ManualResetEvent-klasse

Varsle en eller flere ventetråder om at en hendelse har funnet sted. Slike typer kan ikke arves.


Testkoden er som følger:








Foregående:C# sender tekstmeldinger til mobiltelefoner
Neste:SQL fjerner mellomrom fra dataene
 Vert| Publisert på 17.05.2018 21:14:51 |
_event. Set(); er å fortsette tråden
_event. Reset(); er å suspendere tråden
 Vert| Publisert på 29.05.2018 14:58:49 |
Hvis du får ID-en til den nåværende tråden, bruk :

Thread.CurrentThread.ManagedThreadId.ToString() (anbefalt)
Ansvarsfraskrivelse:
All programvare, programmeringsmateriell eller artikler publisert av Code Farmer Network er kun for lærings- og forskningsformål; Innholdet ovenfor skal ikke brukes til kommersielle eller ulovlige formål, ellers skal brukerne bære alle konsekvenser. Informasjonen på dette nettstedet kommer fra Internett, og opphavsrettstvister har ingenting med dette nettstedet å gjøre. Du må fullstendig slette innholdet ovenfor fra datamaskinen din innen 24 timer etter nedlasting. Hvis du liker programmet, vennligst støtt ekte programvare, kjøp registrering, og få bedre ekte tjenester. Hvis det foreligger noen krenkelse, vennligst kontakt oss på e-post.

Mail To:help@itsvse.com