我正在用 C# 制作服务器,并且我有一个单例来处理数组中的所有登录用户。该数组是一个名为 UserSession 的类的数组。
这个 UserSession 类有一个在处理该用户传入数据包的单独线程上运行的方法。
好吧,考虑一下这段代码:
class UserSession
{
public UserSession(TcpClient client)
{
var thread = new Thread(new ParameterizedThreadStart(HandleComm);
thread.Start((object)client);
}
public void HandleComm(object tcpClient)
{
TcpClient client = (TcpClient)tcpClient;
NetworkStream stream = client.GetStream();
while(1 == 1)
{
byte[] buffer = new byte[4096];
stream.Read(buffer, 0, buffer.Length);
int testShort = Convert.ToInt32(buffer);
switch((ActionEnum)testShort)
{
case ActionEnum.Something:
// here is my problem!
// do some more parsing of the message
this.DoSomething(SomethingStruct argument); // argument taken from the byte array
break;
case ActionEnum.AnotherSomething:
// the same as before
break;
// and this goes on and on
}
}
}
}
处理所有这些单独的枚举而不在该类上重复使用 80 多个方法的最佳方法是什么?(ActionEnum 是一个带有当前用户特定操作的枚举)。
我序列化了那个缓冲区,我只是让代码快速让你有一个想法。