OutOfMemoryException во время удаленного вызова метода
-
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).Я уверен, что благодаря этому кто-то сможет дать однозначный ответ.
Сведение вашего кода к образцу само по себе, вероятно, позволит вам найти причину.
Райан