OutOfMemoryException während der Remote-Call-Methode
-
12-09-2019 - |
Frage
Iam OutOfMemoryException bekommen, während Fernmethodenaufruf zu machen.
"RemoteEntity.SetLocalStore (DATASET);"
übergebene Wert ist Dataset.
Hinweis Größe des Datensatzes ist 38MB
envoirment c # VS2008
Danke
Code:
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);
}
Lösung
Ich glaube, Sie kennen die Antwort, 38MB viel zu groß ist, einen Remote-Aufruf zu tun über. Was wird es helfen, diagnostizieren weiter lokal ein komplettes Beispiel zu zeigen, wäre durch Ihr Problem nur zwei Funktionen simplfying ausgeführt wird.
Dies wird helfen, festzustellen, ob es die Größe des Datensatzes oder eine Größe Einschränkung in der Remote-Schnittstelle / Netzwerkkonfiguration ist.
mit Zusätzlich wird ein funktionstüchtiges Beispiel jemand anderes erlauben würde, um das Problem zu replizieren und die Typinformationen (siehe zum Beispiel, können wir nicht sehen, welcher Objekttyp die Ausnahme werfen und können keine Einschränkungen in MSDN nachschlagen). Ich bin sicher, mit dieser jemand eine definitive Antwort geben würde.
Der Akt des Codes zu einer Probe reduziert wird selbst Dir wahrscheinlich ermöglichen, die Ursache zu finden.
Ryan