gpt4 book ai didi

c# - 可标记计数器

转载 作者:太空宇宙 更新时间:2023-11-03 11:12:30 25 4
gpt4 key购买 nike

我处于这样一种情况,我有一个 session ,它通过一个简单的计数器获得一个由它分配的 ID。好吧,经过大量连接后,计数器将变为 500,即使可能只有 2 个人连接。我想要做的是有一个计数器,将数字标记为免费,以便它们可以重复使用!我不知道如何解决这个问题。我希望你们中的一个能帮助我!

public void createSession(Socket gameClient)
{
uint sessionID = mSessionCounter++;
Session Session = new Session(sessionID, gameClient);
mSessions.Add(sessionID, Session);
CommandLine.WriteLine("Created session " + sessionID + " for " + Session.ipAddress, CommandLine.logType.sessionConnectionEvent);
Session.Start();
}

最佳答案

只是快速了解您可以执行此操作的人员。尽管在您的情况下可能不需要重复使用,但仍然值得了解如何去做(加上回答这个问题会很好)。

如果您需要随时检查正在使用的 session ID,则需要能够跟踪它们。为此,我建议一个简单的 List 就可以了,所以让我们从类似的东西开始:

static List<int> CurrentSessionIDs = new List<int>();

这应该是全局可访问的。为了确保此列表保持干净,在检查“保持事件状态”的函数中,您可以像这样删除一个项目:

CurrentSessionIDs.Remove(sessionID);

接下来,您想使用您的列表作为异常(exception)列表来计算第一个可用的 session 编号。您可以使用 Linq 执行此操作,如下所示:

//this would start at 0 for the first session number
int newSessionNumber = Enumerable.Range(0, int.MaxValue).Except(CurrentSessionIDs).First();

注意:这个用于查找第一个可用数字的可爱 Linq 语法的灵感来自 this post (信用到期等)

关于c# - 可标记计数器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13515613/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com