deserialize system.outofmemoryexception

Posted by clanier9 on Stack Overflow See other posts from Stack Overflow or by clanier9
Published on 2012-11-25T01:01:31Z Indexed on 2012/11/25 23:04 UTC
Read the original article Hit count: 309

I've got a serializeable class called Cereal with several public fields shown here

<Serializable> Public Class Cereal
    Public id As Integer
    Public cardType As Type
    Public attacker As String
    Public defender As String
    Public placedOn As String
    Public attack As Boolean
    Public placed As Boolean
    Public played As Boolean
    Public text As String

    Public Sub New()

    End Sub
End Class

My client computer is sending a new Cereal to the host by serializing it shown here

'sends data to host stream (c1)
Private Sub cSendText(ByVal Data As String)
    Dim bf As New BinaryFormatter
    Dim c As New Cereal
    c.text = Data
    bf.Serialize(mobjClient.GetStream, c)
End Sub

The host listens to the stream for activity and when something gets put on it, it is supposed to deserialize it to a new Cereal shown here

'accepts data sent from the client, raised when data on host stream (c2)
Private Sub DoReceive(ByVal ar As IAsyncResult)
    Dim intCount As Integer

    Try
        'find how many byte is data
        SyncLock mobjClient.GetStream
            intCount = mobjClient.GetStream.EndRead(ar)
        End SyncLock
        'if none, we are disconnected
        If intCount < 1 Then
            RaiseEvent Disconnected(Me)
            Exit Sub
        End If

        Dim bf As New BinaryFormatter
        Dim c As New Cereal
        c = CType(bf.Deserialize(mobjClient.GetStream), Cereal)
        If c.text.Length > 0 Then
            RaiseEvent LineReceived(Me, c.text)
        Else
            RaiseEvent CardReceived(Me, c)
        End If

        'starts listening for action on stream again
        SyncLock mobjClient.GetStream
            mobjClient.GetStream.BeginRead(arData, 0, 1024, AddressOf DoReceive, Nothing)
        End SyncLock
    Catch e As Exception
        RaiseEvent Disconnected(Me)
    End Try
End Sub

when the following line executes, I get a System.OutOfMemoryException and I cannot figure out why this isn't working.

c = CType(bf.Deserialize(mobjClient.GetStream), Cereal)

The stream is a TCPClient stream. I'm new to serialization/deserialization and using visual studio 11

© Stack Overflow or respective owner

Related posts about visual-studio

Related posts about serialization