我有一个Game类,里面有一个玩家列表。
class Game {
Player[] Players;
}
我有两种集线器方法:
OnDisconnected() {
room.Players.Remove(3);
}
CalculateScore() {
int score = room.Players[3].Score;
// use score
}
OnDisconnected
正在删除播放器,CalculateScore
正在使用该播放器来计算分数。
当用户在CalculateScore
正在运行时断开连接时会发生什么。
我该如何处理这种情况?
答案 0 :(得分:0)
这与SignalR的实现没有多大关系,但更多的是针对您的用例的要求以及您对CalculateScore
的结果所做的事情。
我会以下列方式处理这种情况:
CalculateScore()
{
if(room.Players[3] == null)
{
//get the latest information on this user based on his Id from the
//database and calculate his score based on that.
}
//if the user is still connected, calculate the score using
// room.Players[3].Score
}
这样,如果用户已经连接,你可以在没有数据库访问的情况下计算他的分数,因为你从模型中得到他的分数,如果他断开连接,你仍然可以计算他的分数(但是操作会慢一点,因为数据库访问)。
希望这会有所帮助。祝你好运!