Сериализация в сокеты много раз занимает много оперативной памяти. Почему? - PullRequest
0 голосов
/ 21 марта 2019

Поэтому, когда у микрофона есть данные, он отправляет их на сервер.И это занимает много памяти. Около 2 МБ в 2 сек.И это не остановит.Должен ли я написать это по-другому или другого пути нет?Connections - это статический класс, содержащий этот метод.

[Serializable]
public class Communication
{
    public enum ComType
    {
        Recording,
        Sound
    };
    public ComType comType;
    public object data;
}

microphone.DataAvailable += (s, args) => 
        {
            if (!micMuted)
            {
                try
                {
                    communication.data = args.Buffer;//Instance of communication class
                    Connection.SendToServer(communication);//The line that boosts the memory usage
                }
                catch
                {

                }
            }
        };

public static class Connection
{
    public static Socket socket = new Socket(SocketType.Stream, ProtocolType.Tcp);
    public static BinaryFormatter formatter = new BinaryFormatter();
    public static NetworkStream stream;
    public static void Connect(string ip, int port)
    {
        try
        {
            socket.Connect(new IPEndPoint(IPAddress.Parse(ip), port));
            stream = new NetworkStream(socket);
        }
        catch
        {
            System.Windows.Forms.MessageBox.Show("Could not connect to servers please restart program.\nYou might be offline");
        }
    }

    public static void SendToServer(object obj)
    {
        try
        {
            formatter.Serialize(stream, obj);
            stream.Flush();
        }
        catch
        {
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...