私のウェブアプリケーションでは、頻繁に必要なデータをキャッシュする必要がありますが、変更頻度は少なくなります。それらを保持するために、これらのフィールドを静的な値として保持するセパレート静的クラスを作成しました。これらのフィールドは、最初の呼び出しで初期化されます。以下のサンプルを参照してください。静的メソッドで静的フィールドの複数の初期化を防ぐ方法は?
public static class gtu
{
private static string mostsearchpagedata = "";
public static string getmostsearchpagedata()
{
if (mostsearchpagedata == "")
{
using (WebClient client = new WebClient())
{
mostsearchpagedata = client.DownloadString("https://xxx.yxc");
}
}
return mostsearchpagedata;
}
}
ここでWebリクエストは1回だけ実行されますが、大丈夫ですが、大きな番号がある場合はすぐに呼び出されます。ユーザーとapppoolが再起動しました。 websequestはmostsearchpagedataが初期化されたかどうかに応じて複数回行われます。
webrequestが一度だけ実行され、その他のすべての要求が最初のWeb要求の完了まで待機することを確認するにはどうすればよいですか?
あなたはシングルトンを探していて、それについて読むことができます。 https://stackoverflow.com/questions/2667024/singleton-pattern-for-c-sharp –
これはスレッドセーフではないため、エラーが発生します。これにはシングルトンが必要です。参照 - http://csharpindepth.com/Articles/General/Singleton.aspx – Yogi