OutOfMemoryException во время удаленного вызова метода

StackOverflow https://stackoverflow.com/questions/1661649

  •  12-09-2019
  •  | 
  •  

Вопрос

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

"RemoteEntity.SetLocalStore(DATASET);"

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

Примечание. Размер набора данных составляет 38 МБ.

Окружение С# 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);

        }
Это было полезно?

Решение

Я думаю, вы знаете ответ: 38 МБ — это слишком много для удаленного вызова.Что поможет диагностировать это в дальнейшем, так это показать полный пример, упростив вашу проблему до двух функций, выполняемых локально.

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

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

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

Райан

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top