- - PR -
WEBコントロールはスレッドセーフ?
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2006-02-20 19:45
質問:WEBコントロール(System.Web.UI.WebControls)のイベント(onclickなど)は
スレッドセーフで動作するのでしょうか。 状況:ボタンを押すと登録処理を行い、画面遷移を行うページがあります。そこで2重送信防止のため、画面にGUID値を埋め込み、クライアントからのリクエストが有効なのかをサーバで判定し、有効の場合は登録を行い画面遷移、無効の場合は画面遷移のみを行っています。 このような動作を実装する場合、ボタンのonclickイベント内を同期(SyncLock)する必要があるのでしょうか。現状では、ボタンを連打してみてもスレッドセーフで動いているように見えるのですが、確信が持てないのです。 | ||||
|
投稿日時: 2006-02-20 19:59
質問としたいことがイマイチはっきり理解できなかったのですが、特別な事をしなければスレッドセーフではないでしょう。 具体的に何の同期をとって何をしたいのでしょうか? _________________ 囚人のジレンマな日々 | ||||
|
投稿日時: 2006-02-22 22:29
スレッドセーフなのかなぁ?
同じブラウザから発せられたリクエストであっても、「別のリクエスト」なのですから、完全に別の「オブジェクト」が割り当てられます。 ブラウザに対して複数のレスポンスが返りますが、有効なのは最後のリクエストだけですから、画面遷移のみが行われることになります。 このとき、遷移先の画面で表示するべき内容が、最初のリクエストで行われている更新よりも先に参照されれば、更新されていない内容が表示されます。 んで、おそらく、このような状態を、デバッグ環境で作ることは難しいです。デバッグ環境では、すべてのリクエストは、リニアに処理されるからです・・・と、どこかに書いてあったように記憶しているが、探せなかった。 〆 written by Jitta@わんくま同盟 on 2006/02/22 |
1