2010-07-17 3 views
0

프로젝트에 사용하고 싶고 문제가 있습니다. 두 개의 스레드를 시작한 다음 폼을 닫고 스레드가 계속 작업을 수행하는 Windows Form이 있습니다. 어떻게 두 번째 스레드가 중지되면 첫 번째 스레드를 중단 할 수 있습니까?스레딩 문제

첫 번째 스레드 IsBackground를 만들었지 만 두 번째 스레드가 프로그램의 유일한 스레드가 아니며 첫 번째 스레드가 닫혀 있고 더 이상 존재하지 않는 다른 스레드 (양식)에서 시작되며 추가로 플래그를 설정할 수 없습니다 존재하지 않는 클래스의 어떻게해야합니까?

이 문제를 해결하려면 전자 메일 프로젝트를 보내주십시오. 감사합니다.

답변

0

존재하지 않는 플래그 또는 클래스를 설정할 수 있지만 어딘가에 플래그를 만들 수 있다고 말합니다. 그게 가능하지 않다면 그 이유를 게시해야한다고 제안합니다. 첫 번째 스레드가 그것이 사실 때이 bool 다음 끝내기를 계속 확인 할 것 booltrue하고 2 스레드를 설정합니다 완료되면

그래서 모두 스레드, 몇 가지 방법으로 bool에 대한 참조를 보낼 것입니다.

+0

저는 VB.NET2008로 작업 중이며 모듈을 만들고 스레드를 신고하고 플래그를 지정합니다. 전자 메일이 있으면 작은 프로젝트를 보냅니다. 나쁜 영어에 감사하고 죄송합니다. – Sadjad

1

.NET 4.0의 경우 배경 작업을 Task 개체로 설정하고 CancellationToken을 사용하여 작업을 취소하는 것이 좋습니다.

아직 .NET 4.0에 있지 않다면, 취소를 지원하는 BackgroundWorker 개체를 사용할 수 있습니다.

0

아마도 사라질 양식에서 스레드를 만들지 않는 것이 좋습니다. 아마도 당신은 Program.cs에서 쓰레드를 생성해야만하고, 애플리케이션이 닫힐 때 그 쓰레드를 죽일 수 있습니다. 또는 응용 프로그램의 구조에 따라이 메서드의 변형입니다.

+0

VB.NET2008에서 일하고 있는데 모듈을 만들고 내 스레드와 플래그를 선언합니다. 전자 메일이 있으면 작은 프로젝트를 보냅니다. 나쁜 영어에 감사하고 죄송합니다. – Sadjad