OutOfMemoryException durante la chiamata metodo remoto
-
12-09-2019 - |
Domanda
Iam ottenere OutOfMemoryException mentre facendo chiamata di metodo remoto.
"RemoteEntity.SetLocalStore (DATASET);"
valore passato è insieme di dati.
Nota Dimensioni del set di dati è 38MB
envoirment c # VS2008
Grazie
Codice:
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);
}
Soluzione
Credo che si conosce la risposta, 38MB è troppo grande per fare più di una chiamata remota. Che contribuirà a diagnosticare ulteriormente sarebbe quello di mostrare un esempio completo da simplfying il problema per appena due funzioni in esecuzione a livello locale.
Ciò contribuirà a individuare se è la dimensione del set di dati o un vincolo formato nella configurazione dell'interfaccia / rete remota.
Inoltre avere un campione di lavoro permetterebbe a qualcun altro di replicare il problema e vedere le informazioni sul tipo (ad esempio, non siamo in grado di vedere ciò che tipo di oggetto sta gettando l'eccezione e non in grado di guardare in alto vincoli in MSDN). Sono sicuro che con questo qualcuno sarebbe in grado di fornire una risposta definitiva.
L'atto di ridurre il codice per un campione sarà di per sé probabilmente consentono di trovare la causa.
Ryan