OutOfMemoryException во время удаленного вызова метода - PullRequest
0 голосов
/ 02 ноября 2009

Я получаю OutOfMemoryException при выполнении удаленного вызова метода.

"RemoteEntity.SetLocalStore (DATASET);"

переданное значение является набором данных.

Примечание. Размер набора данных: 38 МБ

.

Envoirment c # VS2008

Спасибо

Код:

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);

        }

1 Ответ

1 голос
/ 02 ноября 2009

Я думаю, что вы знаете ответ, 38 МБ - это СЛИШКОМ большой путь для удаленного вызова. Дальнейшая диагностика поможет показать полный пример, упростив вашу задачу до двух локально работающих функций.

Это поможет определить, является ли это размер набора данных или ограничение размера в конфигурации удаленного интерфейса / сети.

Кроме того, наличие рабочего образца позволило бы кому-то другому повторить проблему и увидеть информацию о типе (например, мы не можем видеть, какой тип объекта вызывает исключение, и не можем искать какие-либо ограничения в MSDN). Я уверен, что с этим кто-то сможет дать окончательный ответ.

Само по себе приведение кода к образцу, вероятно, позволит вам найти причину.

Ryan

...