- - PR -
asp.net C# Threadの使用方法について
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2005-08-04 15:56
お世話になります。
ASP.NETアプリケーションである付加の高い処理がありまして、 その処理をしている際は処理中画面を表示し、 そこに処理中止ボタンがあります。 処理中止ボタンを押すとその処理を中止し、全画面へ遷移。 処理中止ボタンが押されずに処理が終了すると次画面へ遷移 というようなことをやりたいのです。 今は重い処理をThread化してSessionにそのthreadを保存して 中止ボタンでそのThreadをAbort()とすることで 処理の中止はできているのですが、 ThreadをJoin()して次画面への遷移をどのようにしたらよいのかわからずにいます。 どなたかいい方法を知っている方がいましたらお願いいたします。 | ||||
|
投稿日時: 2005-08-04 16:35
http://www.gdncom.jp/general/bbs/ShowPost.aspx?PostID=20735
のJittaさんの方法がいいと思います。 | ||||
|
投稿日時: 2005-08-04 17:31
早速の返信ありがとうございます。
リンクを拝見しましたが、この方法だと Page_Loadでスレッドの処理が終了するのを待つので、 処理中止ができなくなるような気がします。 かといって、処理中止をしたい為にPage_Loadで何もしないと Sessionからスレッドを取得してAbort()で処理中止はできますが、 処理が完了したことがわかりません。 (今がこの状態です。) | ||||
|
投稿日時: 2005-08-04 17:58
.Join()ならそうですが、.Join(0)ならすぐ抜けます。 もっとも、終了判定は .IsAlive か .ThreadState がよいのかもしれません。 | ||||
|
投稿日時: 2005-08-04 18:13
Page_LoadでJoin(0)などとすると
ページのロード時に一回のみチェックすることになり、 そのページ内にある処理中止ボタンが聞かなくなるような気がするのですが、、 | ||||
|
投稿日時: 2005-08-04 18:34
ども、ぼのぼのです。
これ、読んでみたんですが、<meta>タグを使ってページを定期的にリロードしてますよね。で、この方法でリロードを行うと、処理的には、「ポストバック」ではなく「同じURLへのリダイレクト」になるので、IsPostBackは必ずFalseになります。ここに着目すれば解決しませんか? つまり、<meta>タグで定期的にリロードするようにしつつ、画面内にSubmitボタンとして中断ボタンを配置、Page_LoadでIsPostBackがTrueだったら中断処理、Falseだったら終了判定処理。 脳内実行で、実際に動かして試したわけではないので、間違ってたらご容赦ください。 [ メッセージ編集済み 編集者: ぼのぼの 編集日時 2005-08-04 18:37 ] |
1