2011-10-29 15 views
0

Webサービスの開始時にいくつかのコードを一度しか実行しません。 は私がvoid Application_Start(object sender, EventArgs e)を使用することを考えたが、私は自分のコードWebサービスでカスタムコード関数を1回だけ実行するにはどうすればいいですか?

`Request.ServerVariables["SERVER_SOFTWARE"];` 

で持っていると私は例外Request is not available in this contextは、アプリケーションだけで起動し、リクエストを処理していないbecaseオブジェクトは、おそらくまだ存在していないようで取得します。

どうすればこの問題を解決できますか? 私のコードは一度しか実行できません。

答えて

3

falseに初期化された静的なブールフィールドを使用して、関数が呼び出されたかどうかをチェックし、呼び出されたものをtrueに設定します(関数の最後で最もうまくいきます)。

値がfalseの場合にのみ、関数内のコードを実行します。

競合状態を避けるために適切なロックを行います(Yahiaに感謝します)。

+1

ロックなしで競合状態になりがちですか? – Yahia

+0

@Yahia - 公正なポイント。適切なロックに関する情報を追加しました。 – Oded

関連する問題