2009-09-10 4 views
1

나는 그것이이 작업을 완료 한 후 MyObject를 위해하신 일을ParameterizedThreadStart를 통해 스레드에 객체를 전달하면 나중에 액세스 할 수 있습니까?

Thread newThread = new Thread(new ParameterizedThreadStart(MyThreadMethod)); 
Object myObject = new Object(); 
newThread.Start(myObject); 

내가 찾을 수있는 다음과 같은 방식으로 스레드를 시작하면?

// at some point later 
if(newThread.ThreadState == ThreadState.Stopped) 
{ 
//access my object? how? 
} 

답변

2

당신은 그것을 넘겨 줬습니다. 따라서 시작하는 스레드와 나란히 놓은 객체를 저장하십시오. 당신이 그것으로 무엇을하는지에 대해 매우 조심하십시오, 또는 당신은 흥미로운 스레딩 문제에 부딪 힐 수 있습니다.

+0

그래서 개체 목록이 있고 각 개체가 별도의 스레드에서 처리되는 경우 각 개체에 몇 가지 플래그 나 ID를 유지해야합니다. 그런 다음 플래그/ID를 사용하여 목록에서 개체를 찾으면됩니다 처리 되었습니까? – Evgeny

+1

내가 할거야 ...'Dictionary threadMap;'... –

+0

물론 ...이 솔루션은 어떻게 든 나를 도망 쳤다 ... 감사합니다 =) – Evgeny

1

확실히. 쓰레드를 멈추게되면 그 객체에 전달 된 객체가 파괴되지 않습니다. 여전히 객체에 대한 참조가 있고 처리되지 않은 경우 사용할 수 있습니다.

그러나 Thread :: Start 메서드에 전달 된 값을 가져 오는 고유 한 방법은 없습니다. 대신 스레드를 시작한 위치에서 참조를 유지해야합니다.

관련 문제