private void MessageReceived(GameServer server, IProtocol message) { switch ((ProtocolDef)message.ProtocolId) { case ProtocolDef.g2e_openfile_def: case ProtocolDef.g2e_seekfile_def: case ProtocolDef.g2e_writefile_def: case ProtocolDef.g2e_closefile_def: case ProtocolDef.g2e_readfile_def: if (server.IsConnected) { IList fmTasks = server.FMTask; if (fmTasks.Count > 0) { FileManageTask task = (fmTasks[0] as FileManageTask); if (task.State == FileManageTask.TaskState.Processing || task.State == FileManageTask.TaskState.Aborting) { bool success = task.DoTask(server, message); if (success) { if (task.State == FileManageTask.TaskState.Completed || task.State == FileManageTask.TaskState.Stopped) { server.RemoveFMTask(0); } } else { server.RemoveFMTask(0); } } } } break; default: break; } }