2009-09-10 7 views
1

私は次のようにスレッドを起動した場合ParameterizedThreadStart経由でオブジェクトにスレッドを渡すと、後でアクセスできますか?

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

が、私はそれが仕事を終えた後に、それは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メソッドに渡される値を戻す固有の方法はありません。代わりに、おそらくあなたがスレッドを開始した場所から、その参照を保持する必要があります。

関連する問題