이 글은 기계 번역의 미러 문서이며, 원본 기사로 바로 이동하려면 여기를 클릭해 주세요.

보기: 29278|회답: 2

[출처] .net/c# 스레드 스레드 일시 중지 및 재개 구식 솔루션

[링크 복사]
게시됨 2018. 5. 17. 오전 9:36:10 | | | |
Thread.Suspend는 폐지되었습니다.  System.Threading 내에서 Monitor, Mutex, Event, Semaphore 등 다른 클래스를 사용하여 스레드를 동기화하거나 자원을 보호하세요.  하이퍼링크 로그인이 보입니다.
Thread.Resume은 폐기되었습니다.  System.Threading 내에서 Monitor, Mutex, Event, Semaphore 등 다른 클래스를 사용하여 스레드를 동기화하거나 자원을 보호하세요.  하이퍼링크 로그인이 보입니다.
스레드가 일시정지나 계속을 원하면, 저는 이전에 일시정지와 재개라는 두 가지 방법을 사용해봤고, 이 두 가지 방법으로 스레드를 작동시켰는데, 사실 이게 문제였고 당시에는 신경 쓰지 않았어요. 그래서 오늘은 꺼내서 함께 공부해봅시다!

위 두 가지 방법으로 스레드를 일시 중지하고 계속하는 데 어떤 문제가 있나요?

예를 들어, 스레드를 일그러뜨리기 위해 Suspend 메서드를 호출한 후 즉시 Resume 메서드를 호출해 스레드를 계속 진행한다면 문제가 있을 수 있습니다.

스레드를 일시 중지하기 위해 Suspend 메서드를 호출한 후에도 스레드가 즉시 중단되지 않을 수 있습니다. 여기서는 처리 시간이 걸리기 때문입니다. 이 시점에서 즉시 Resume 메서드를 호출해 스레드를 계속 진행하면 프로그램이 즉시 중단됩니다!

마이크로소프트의 설명은 다음과 같습니다:


스레드 활동을 동기화하기 위해 일시정지(Suspend)와 재개 메서드를 사용하지 마세요. 스레드 실행을 일시정지할 때 코드가 무엇인지 알 수 있는 방법이 있을까요? 보안 권한 평가 중에 잠금을 유지하면, AppDomain 내 일시 중지된 스레드 내 다른 스레드들이 차단될 수 있습니다. 클래스 생성자를 실행할 때 AppDomain 내 다른 스레드를 일시 중지하면, 클래스 사용 시도가 차단됩니다. 교착 상태는 쉽게 발생할 수 있습니다.

//
        요약:
        중단된 스레드를 계속하세요.
        //
        이상 현상:
        T:System.Threading.ThreadStateException:
        스레드는 시작되지 않았거나, 죽었거나, 대기 상태에 있지 않습니다.
        //
        T:시스템.보안.보안 예외:
        발신자는 올바른 System.Security.Permissions.SecurityPermissions.SecurityPermission을 가지고 있지 않습니다.
        [구식("스레드. 이력서는 폐기되었습니다.  System.Threading 내에서 Monitor, Mutex, Event, Semaphore 등 다른 클래스를 사용하여 스레드를 동기화하거나 자원을 보호하세요.  하이퍼링크 로그인이 보입니다.", 거짓)]
        [보안안전위급]
        공공 공허 이력서();

이 문제를 어떻게 해결할 수 있을까요?



ManualResetEvent 클래스

이벤트 발생 여부를 하나 이상의 대기 스레드에 알립니다. 이런 유형은 상속될 수 없습니다.


테스트 코드는 다음과 같습니다:








이전의:C#은 휴대폰으로 문자 메시지를 보냅니다
다음:SQL은 데이터에서 공백을 제거합니다
 집주인| 게시됨 2018. 5. 17. 오후 9:14:51 |
_event. Set(); 스레드를 계속 이어가는 것입니다
_event. 리셋(); 스레드를 정지시키는 것입니다
 집주인| 게시됨 2018. 5. 29. 오후 2:58:49 |
현재 스레드의 ID를 받으면 다음을 사용하세요:

Thread.CurrentThread.ManagedThreadId.ToString() (권장)
면책 조항:
Code Farmer Network에서 발행하는 모든 소프트웨어, 프로그래밍 자료 또는 기사는 학습 및 연구 목적으로만 사용됩니다; 위 내용은 상업적 또는 불법적인 목적으로 사용되지 않으며, 그렇지 않으면 모든 책임이 사용자에게 부담됩니다. 이 사이트의 정보는 인터넷에서 가져온 것이며, 저작권 분쟁은 이 사이트와는 관련이 없습니다. 위 내용은 다운로드 후 24시간 이내에 컴퓨터에서 완전히 삭제해야 합니다. 프로그램이 마음에 드신다면, 진짜 소프트웨어를 지원하고, 등록을 구매하며, 더 나은 진짜 서비스를 받아주세요. 침해가 있을 경우 이메일로 연락해 주시기 바랍니다.

Mail To:help@itsvse.com