■30643 / ) |
Re[26]: スレッドプール処理のキャンセルについて |
□投稿者/ 片桐 (121回)-(2008/12/29(Mon) 11:19:07)
|
一番大事な変数が放置のような……
Print.batchCancelFlg のアドレスがスレッド間で保護されてませんですよ。
書き込むときと読み出すときに、InterlockedなりSyncLockなり必要ではないかなぁと。 あちこちでアクセスしてますし。
あと、ソースよんで思ったのですけれど、Print.Runでスレッドプールに入って待つのは1スレッド? すると、実は呼び出し元スレッド待ち側で待ち処理をするまでの間にスレッドプールの スレッドがすでに処理終わってて、インスタンスいらないよーって使用済になってない?
あ、それに、Print.RunがBeginInvokeじゃないから、処理終わるまでクリックイベントが終わらない気もする。 で、Print処理するオブジェクトSharedじゃないから、せっかくSharedにしたStartとEndの変数は 常にStartもEndも1になりそうな……ってことは、Start<>End のIF文がFALSEとなる可能性も低いような…… 実際のスレッドプールに入れてる処理が長くで大きいなら有り得るけれど……
っとソースをみて、感想をつらつらと。
|
|