我正在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是具有当前用户特定操作的枚举)。
我序列化该缓冲区,我只是快速让你有一个想法的代码。
链如何出现在你的类'UserSession'是单身?它有一个公共构造函数 – Habib 2012-07-10 04:24:36
我希望你处理任何stream.Read()返回你的生产代码。至于这个问题,有很多方法有什么问题?如果你只做了几行代码,处理可能会停留在案例本身;否则它可能值得一种方法。 upd:如果你的对象是一致的序列化的,它实际上可能是一个方法,其中一些描述传入消息的格式作为参数。 – 2012-07-10 04:28:38
@ Habib.OSU我在一个名为LoggedUsers的类里面有一个UserSession数组,这是一个单身人士 – Pacha 2012-07-10 04:31:23