통합검색
· 마을서비스란?  · 포럼마을  · 일반마을  · 테마마을  · 마을랭킹  · 활동왕
· 덱스퍼트란?  · TECBOX   · PRSBOX   · 이용안내  
· DEXT제품군  · 솔루션베이  · S/W & ESD 컴포넌트
· 프로그램베이
· LiveSeminar  · LiveConference
데브피아 C# 포럼 마을에 오신 것을 환영합니다.
  마을등급 C#   이 마을은 포럼마을 입니다이 마을은 자유가입제 마을 입니다 마을소개 페이지로 이동 전입신청
마을촌장촌장 비사모 주민 12902 since 2006-12-28
우리마을 공지사항
질문&답변
강좌&팁
자유게시판
자료실
앨범
개인게시판
[마을 게시판]
구인/구직 게시판
건의 / 운영 제안
랑데브 게시판
칼럼 게시판
개발자 고충상담
Dev Talk
자유토론방
벼룩시장
재나미 우스개
구인/프로젝트 정보
사람인 채용 게시판
  고객지원 게시판
마이 데브피아
 나의 e-Money 내역
 활동왕 My Page
 스크랩한 게시글보기
 쪽지관리
 주소록관리

 질문&답변 ※ 꼭 답변채택을 해주시어 성의껏 답변해주신 회원님께 감사의 마음을 전하시길 바랍니다.
 쓰레드 사용법 문의 드립니다.  | Other 2020-03-25 오후 4:23:31
걸음이 느린 아이 번호: 180007 추천:0  / 읽음:51

안녕하십니까..

 

요즘 클래스 여러개를 멀티 스레드로 올리고 

 

스레드를 중간에 Suspend 로 일시 정지 후 

 

다시 Resume으로 일시 정지 된 스레드를 다시 시작으로 스레드 제어를 하고 있는데요..

 

간혹적으로 멀티 스레드가 전부 Running 상태로 되어 프로그램이 멍 때리고 있더라고요... 클래스 전부 브레이크를 걸어 

 

어느 부분에서 잡고 있는지 확인 하려고 하여도 브레이크가 걸리지 않아 확인도 안되고 이런 경우에 프로그램을 종료 하고 다시 실행 하면

 

또 잘되고 하는데.. 혹시 문제가 될 만한게 있는지 조언 부탁드립니다. 

 

 

public void RunThrad()

{

    for (int t = 0; t < thread_count; t++)

    {

        if (Thread[t] == null) continue;

        if ((Thread[t].ThreadState & ThreadState.Unstarted) == ThreadState.Unstarted)

        {

            Thread[t].Start();

        }

        else if ((Thread[t].ThreadState & ThreadState.Suspended) == ThreadState.Suspended)

        {

            Thread[t].Resume();

        } 

    }

}

 

public void StopThread()

{

    for (int t = 0; t < thread_count; t++)

    {

        if ((Thread[t].ThreadState & ThreadState.Running) == ThreadState.Running) || Thread[t].ThreadState & ThreadState.WaitSleepJoin) == ThreadState.WaitSleepJoin)

        {

            Thread[t].Suspend();

        }

    }

}

 

위와 같이 StopThread에서 스레드 상태보고 일시 정지 후 다시 RunTread에서 스레드 상태 확인 후 일시 정지 중인 스레드 다시 시작을 합니다. 

 


 

 

이 글에 답변 등록하기
 [답변]참고해보세요. 2020-03-25 오후 5:05:23
칡흙 번호: 180010 추천:0  

 

- 책 / 사이트 / MSDN 등에서. 잘 되는 예제를 참고해보세요. ㅇ_ㅇ;;

 

 

//

Search - CodeProject
http://www.codeproject.com/search.aspx?q=thread+c%23&x=0&y=0&sbo=kw

thread msdn - Google 검색
http://www.google.com/search?source=hp&ei=4w97XqmSBYv_wAPxu67wCQ&q=thread+msdn&oq=thread+msdn&gs_l=psy-ab.3..0l2j0i30j0i5i30l7.722.3153..3365...0.0..0.235.1801.0j12j1......0....1..gws-wiz.....0..0i131j0i10j0i70i255j0i10i30.o6T6hVFyqKg&ved=0ahUKEwjpj6u5lLXoAhWLP3AKHfGdC54Q4dUDCAY&uact=5

Thread 클래스 (System.Threading) | Microsoft Docs
http://docs.microsoft.com/ko-kr/dotnet/api/system.threading.thread?view=netframework-4.8

스레드(thread) | Microsoft Docs
http://docs.microsoft.com/ko-kr/cpp/cpp/thread?view=vs-2019

스레드 및 스레딩 사용 | Microsoft Docs
http://docs.microsoft.com/ko-kr/dotnet/standard/threading/using-threads-and-threading

Threads and threading | Microsoft Docs
http://docs.microsoft.com/en-us/dotnet/standard/threading/threads-and-threading

Creating Threads - Win32 apps | Microsoft Docs
http://docs.microsoft.com/en-us/windows/win32/procthread/creating-threads

뉴토이 :: 쓰레드 만들기와 종료(MSDN)
http://newtoynt.tistory.com/entry/%EC%93%B0%EB%A0%88%EB%93%9C-%EB%A7%8C%EB%93%A4%EA%B8%B0%EC%99%80-%EC%A2%85%EB%A3%8C

명월 일지 :: [C# 강좌 - 25] 쓰레드 - Thread 클래스
http://nowonbun.tistory.com/133

[MSDN] 스레드 만들기 및 종료
http://gipple.tistory.com/15

[Window Thread] 윈도우에서 쓰레드 간단한 예시
http://redcoder.tistory.com/135

[C#] Task Class 비동기 스레드 및 병렬 (MSDN) :: 삽질하는 개발자...
http://kdsoft-zeros.tistory.com/15

C# - Thread Local - jacking75
http://jacking75.github.io/csharp_ThreadLocal/

LateDreamer의 좌충우돌: C# Thread, Task
http://latedreamer.blogspot.com/2017/01/c-thread-task.html

Threading example from Msdn (link in code) (copy paste) | C# Online Compiler | .NET Fiddle
http://dotnetfiddle.net/hNvd2o

Create New Thread [C#]
http://www.csharp-examples.net/create-new-thread/

C++ Tutorial: Multi-Threaded Programming - Thread for Win32 - 2020
http://www.bogotobogo.com/cplusplus/multithreading_win32A.php

C# 프로그래밍 검색결과, 책 검색 : 네이버 책
http://book.naver.com/search/search.nhn?sm=sta_hty.book&sug=pre&where=nexearch&query=C%23+%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D

 

 

이 글에 답변 등록하기
 [답변]제목입니다 2020-03-26 오전 11:24:11
밍키 번호: 180023 추천:0  

Suspend Resume은 디버거용 함수 입니다 디버깅 프로그램이 아닌이상 사용하면 안됩니다

Suspend를 사용하게되면 의도치않게 멈출수있습니다

개발툴에서 suspend 쓰레드에 접근하면 resume전까지 멈춥니다. 하지만 resume해줄 수단 즉 개발툴이 같이 멈춘 데드락 상태임으로 답이없습니다.

.net은 네이티브 쓰레드와 메니지드 쓰레드가 있기 때문에 네이티브를 suspend시키면 매니지드는 running일수 있습니다

하나의 네이티브가 두개 이상의 매니지드를 실행할수도 있습니다. 그럼 일시중지 시킨게 어떤 매니지드 인지 알수가 없죠 물론 메니지드id 속성을 제공함으로 구분은 가능합니다

이 글에 답변 등록하기
목록 보기   지금 보고 계시는 글을 회원님의 my Mblog >> 스크랩에 넣어두고 다음에 바로 보실 수 있습니다.  
회사소개  |   개인정보취급방침  |  제휴문의  |   광고문의  |   E-Mail 무단수집거부  |   고객지원  |   이용안내  |   세금계산서
사업자등록번호 안내: 220-81-90008 / 통신판매업신고번호 제 2017-서울구로-0055호 / 대표: 홍영준, 서민호
08390, 서울시 구로구 디지털로32길 30, 1211호 / TEL. 02_6719_6200 / FAX. 02-6499-1910
Copyright ⓒ (주) 데브피아. All rights reserved.