2010-11-19 16 views
0

シンプルなフォームのaspxページで、事前定義されたユーザーリストに電子メールを送信しています。長いリストでは、電子メールが送信を完了する前にページが通常タイムアウトしますが、これは決して問題ではありません。複数のASPXページのポストバック

今日、何か変わったことが起こり、各ユーザーに4つのメールが届いた。ログでは、3つの新しいスレッドが一度に1つずつ増え、リストの先頭から送信を開始することがわかりました。

アイデア?私は意図的にWebページを自分でリフレッシュしなかったことは絶対に知っています。確かに3回ではありません。しかし、ブラウザ(IE8)はそれを実行できましたか?タイムアウトしたときに接続を再確立しようとすると再びポストしますか?または、別のアプリからブラウザのウィンドウに戻ったときは?私は前にこのような行動を見たことがない。

答えて

0

最初に質問するのは、長期実行タスクを同期して実行する理由があるかどうかです。すなわち、ブラウザが待機している間に、バックグラウンドで実行できる何かのためにWeb要求を処理するスレッドをロックします。おそらくそれを得るつもりはないという応答。私は非同期的にこれを実行することを検討したいのでなければ、非常に慎重な理由がある。

第2に、プロセスを複数回起動できないようなロック機構を作成していますか?私はトークンをアプリケーションキャッシュに追加するプロセスを持っています(完了したら削除します)。トークンが存在する場合、プロセスは再び実行されません(asynchタスクの呼び出しは行われません)。仕事をする。そうすれば、あなたのコードを呼び出しているクライアントの数は問題ではありません。

+0

これは、別のアプリで実装されるはずの機能のために、すばやく汚れていました。あなたはそれがどうなるか知っています、10年後にyadda yadda。とにかく同期的に実行することは問題ではありませんが、実行するより良い方法があります。私は間違いなく、ロックを差し伸べることができます、ありがとう。なぜ私はこれが起こったのか分かっていればいいと思う。 – Leslie

関連する問題