Pergunta

Iam ficando OutOfMemoryException ao fazer chamada de método remoto.

"RemoteEntity.SetLocalStore (DATASET);"

valor passado é conjunto de dados.

Nota Tamanho do conjunto de dados é 38MB

envoirment c # VS2008

Graças

Código:

private void backgroundSync_DoWork(object sender, DoWorkEventArgs e)
        {            
            backgroundSync.ReportProgress(10, "Fetching data for sync ...");
            EngagementSet _remoteSet = HKMPClient.Instance.RemoteEntity.GetLocalStore();



            //Update to release memory.
            HKMPClient.Instance.RemoteEntity.SetLocalStore(null);
            //dispose RemoteEntity
            HKMPClient.Instance.DisconnectAndDispose();

            HKMP.EngagementWorks.Windows.BLL.Engagements.Engagement.MergeEntitiesInLimitedConnecitivity(_remoteSet,EngagementID);            
            backgroundSync.ReportProgress(10, "Synchronizing Engagement ...");
            DialogSync _dlgSync = new DialogSync(this.EngagementID, _remoteSet);
            _dlgSync.ServiceRequestStarted += new DialogSync.OnServiceRequestStarted(_dlgSync_ServiceRequestStarted);
            _dlgSync.ServiceRequestCompleted += new DialogSync.OnServiceRequestCompleted(_dlgSync_ServiceRequestCompleted);
            if (_dlgSync.IsShown())
            {
                _dlgSync.StartPosition = FormStartPosition.CenterParent;
                _dlgSync.WindowState = FormWindowState.Normal;
                _dlgSync.ShowDialog();
            }
            //Disposed to release object.
            _dlgSync.Dispose();
            _dlgSync = null;


            // connect again                
            HKMPClient.Instance.Connect(e.Argument.ToString());

            _remoteSet.RemotingFormat = SerializationFormat.Binary;

            HKMPClient.Instance.RemoteEntity.SetLocalStore(_remoteSet);

        }
Foi útil?

Solução

Eu acho que você sabe a resposta, 38MB é muito grande para fazer mais de uma chamada remota. O que vai ajudar a diagnosticar-lo ainda mais seria mostrar um exemplo completo por simplfying seu problema para apenas duas funções rodando localmente.

Isso ajudará a detectar se ele é o tamanho do conjunto de dados ou uma restrição tamanho na configuração remota de interface / rede.

Além disso ter uma amostra de trabalho iria permitir que alguém para replicar o problema e veja as informações de tipo (por exemplo, não podemos ver o que tipo de objeto é lançar a exceção e não pode olhar para cima quaisquer restrições no MSDN). Tenho certeza que com este alguém seria capaz de dar uma resposta definitiva.

O ato de reduzir o seu código a uma vontade amostra em si, provavelmente permitem que você encontrar a causa.

Ryan

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top