我写了以下代码
public static class QuizSessionBL
{
#region Private Data
private static ConcurrentDictionary<int, QuizData> _data = new ConcurrentDictionary<int, QuizData>();
#endregion
#region Public Methods
public static void AddOrUpdate(QuizData pQuizData)
{
_data.AddOrUpdate(pQuizData.Quiz.QuizId, pQuizData,
(key, existingVal) =>
{
return existingVal;
});
}
public static bool Retrieve(int pQuizId, out QuizData pQuizData)
{
return _data.TryGetValue(pQuizId, out pQuizData);
}
public static void Remove(int pQuizId)
{
QuizData qd;
_data.TryRemove(pQuizId, out qd);
}
#endregion
}
我的目标是:
- 每次都在不查询数据库的情况下向学生提供内存测验数据。
- 测验管理员开始测验时将调用 AddOrUpdate() 方法
- 管理员要关闭测验时将调用 Remove() 方法。
例如,如果 3 门课程的 30 名学生(每门课程 10 名)同时调用 Retrieve() 方法,则 _data 集合应该只有 3 个条目,每门课程一个。
所以基本上我想知道上面代码的效率,或者我应该添加更多的东西。我期待在逻辑/概念方面而不是讨论方面的答案。