DOBON.NET DOBON.NETプログラミング掲示板過去ログ

スレッドの再起動

環境/言語:[VB.NET 2002]
分類:[.NET]

説明しずらい内容なので分かりにくいかもしれませんがすみません。

Dim abc As New System.Threading.Thread(New System.Threading.ThreadStart(AddressOf def))

abc.Start()

Private Sub def()

End Sub

こんな感じでスレッド化していた場合、

abc.Abort()

とするとスレッドを終了できますが、次回、

abc.Start()

としても再起動できませんよね。
再起動できるようにしたい場合、どのようにしたらよいのでしょうか。
スレッドを作り直すことができるならそれでもよいのですが。
2005/01/27(Thu) 09:10:11 編集(投稿者)

じゃんぬねっと です。

■No8732に返信(smithさんの記事)
> 説明しずらい内容なので分かりにくいかもしれませんがすみません。
> abc.Abort()
> とするとスレッドを終了できますが、次回、
> abc.Start()
> としても再起動できませんよね。

Thread.Abort() メソッド
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/cpref/html/frlrfsystemthreadingthreadclassaborttopic1.asp

> 再起動できるようにしたい場合、どのようにしたらよいのでしょうか。
> スレッドを作り直すことができるならそれでもよいのですが。

Thread.Suspend() メソッド
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/cpref/html/frlrfsystemthreadingthreadclasssuspendtopic.asp
2005/01/27(Thu) 18:16:52 編集(投稿者)

> Thread.Abort() メソッド

これを実行すると、次回Thread.Start()したとき、
スレッドは終了しています。再起動することはできません。
というエラーが出ます。

> Thread.Suspend() メソッド

これを実行すると、
スレッドは実行中です。保留にすることはできません。
というエラーが出ます。

Thread.Suspend()はスレッドを中断するだけで、
Thread.Resume()でスレッドを続きから再開することはできますが、
最初から実行(再起動)することができません。
じゃんぬねっと です。

まあ、ご自分で初めから答えが出ているように、
新しいインスタンスでも使ってください。

■No8732に返信(smithさんの記事)
> スレッドを作り直すことができるならそれでもよいのですが。
> としても再起動できませんよね。
> 再起動できるようにしたい場合、どのようにしたらよいのでしょうか。
> スレッドを作り直すことができるならそれでもよいのですが。

http://www.thecodeproject.com/csharp/CancellableThreadPool.asp
こちらの記事が参考になるかもしれません。

DOBON.NET | プログラミング道 | プログラミング掲示板