データベースからデータを取得してリストを作成するシングルトンクラスを作成するために、クライアントに送信する必要がある静的な(大きな)データがあります。 Windowsサービス内でサービスホストを起動するので、外部呼び出しでデータが空になったら、どうすればいいですか?Windowsサービスからシングルトンインスタンスを呼び出すWCFServiceが空の状態に戻る
[ServiceBehavior(InstanceContextMode = InstanceContextMode.Single)]
public class CacheDataService : ICacheDataService
{
public List<Sale> GetDataFromImobDateById(int idImob, DateTime date)
{
return SalesHelper.Instance.GetDataFromImobDate(idImob, date);
}
}
public class SalesHelper
{
static Lazy<SalesHelper> singleton = new Lazy<SalesHelper>(() => new SalesHelper());
public static SalesHelper Instance { get { return singleton.Value; } }
ICacheData<Sale> _cache;
List<Sale> CacheData = new List<Sale>();
public void SetCache(ICacheData<Sale> cacheData)
{
_cache = cacheData;
}
public void ReloadCache()
{
CacheData.Clear();
GetAllData();
}
public void GetAllData()
{
CacheData = _cache.GetAllData();
}
public List<Sale> GetDataFromImobDate(int idImob, DateTime date)
{
var result = (from r in CacheData
where r.Data_Alteracao.Equals(date)
&& r.Id_Imobiliaria.Equals(idImob)
select r).ToList();
return result;
}
}
とサービスに私はのServiceHostと私はあなたがSalesHelper.Instance
の初期化が欠けていると思うキャッシュ
_tempSales = new SalesHelper();
ICacheData<Sale> _cacheSale = new Sale();
_tempSales.SetCache(_cacheSale);
_tempSales.GetAllData();
_service = new ServiceHost(typeof(CacheDataService));
SalesHelperクラスも追加できますか? –
申し訳ありませんが、私は間違ったクラス名を入れます。既に修正済みです。 –
もう1つの質問:このメソッドのどこに 'GetDataFromImobDateById'を使用していますか?これがデータが空になる場所です。なぜ私はそれを求めているのですか? '_tempSales'はそれぞれのキャッシュで初期化されていますが、それは問題ありません。しかし、 'SalesHelper.Instance'は一度も設定されていません... –