- - PR -
ASP.NET 2.0で Threadで‘Session情報更新ができますか?
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2008-08-18 21:29
Page_LoadイベントでThreadをNewして、そのThreadのメソッドのなかからSession情報こうしんができますか?
例えばPage_Loadで Session["Flag"]=1として Threadのメソッドの中で Session["Flag"]=0する後、そのSession["Flag"]情報をもらうと1ままですけど、どうすれば宜しいですか? Session Modeは StateServerです。 [ メッセージ編集済み 編集者: falconcj 編集日時 2008-08-18 21:34 ] | ||||
|
投稿日時: 2008-08-18 23:23
次のコードで検証してみましたが再現しませんでした。
もしかして、別スレッドがセッションステートに値を格納する前にメインスレッドが値を取得してたりしませんか? _________________ C#と諸々 | ||||
|
投稿日時: 2008-08-19 09:36
よこけんさん、ありがとうございます。
実際のコード構造は以下の通りです。 コード: -------------------------------------------------------------------------------- protected void Page_Load(object sender, EventArgs e) { this.Session["flag"] = 1; new Thread(methodA).Start(); } //時間がかかる処理 protected void methodA() { //大きいSizeのFileをUpload . . . //処理が終わったら this.Session["flag"] = 0; } //TimerでSession["flag"]をチェックします。 protected void Timer1_Tick(object sender, EventArgs e) { if(this.Session["flag"] == 0) { //終わりメセッジを出す、Redirect } else { //進捗を表示 } } -------------------------------------------------------------------------------- ですけど、Timer_Tickイベントでthis.Session["flag"]がずっと1のままです。 | ||||
|
投稿日時: 2008-08-19 11:31
Ajaxを使っていますね?
Page_Loadで書き換えられていませんか? | ||||
|
投稿日時: 2008-08-19 11:48
すみません。
Page_Loadイベントで if (!IsPostBack) { this.Session["flag"] = 1; new Thread(methodA).Start(); } のようです。 Ajaxを使っています。 | ||||
|
投稿日時: 2008-08-20 00:25
セッションはそんな使い方はできません。
InProcなら実際にはできてしまうかもしれませんがあまりやるべきじゃありません。 InProc以外ではまず完全に無理です。 DBにテーブル作って保存する辺りがまだ無難でしょう。 --追記 時間がかかる処理というのがどのくらいか分かりませんが、あまり長いようだとこれもまずいです(適当ですが、せいぜい数十秒以内程度にしといた方がいいでしょう)。 [ メッセージ編集済み 編集者: なちゃ 編集日時 2008-08-20 00:33 ] | ||||
|
投稿日時: 2008-08-20 06:36
有難うございます、本当に助かりました。
|
1