OutofMemoryException خلال مكالمة طريقة عن بعد
-
12-09-2019 - |
سؤال
أنا الحصول على outofmemoryException أثناء إجراء مكالمة طريقة عن بعد.
"readeentity.setenalocstore (DataSet)؛"
القيمة المرة هي DataSet.
ملاحظة حجم 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);
}
المحلول
أعتقد أنك تعرف الجواب، 38 ميغابايتا كبيرا جدا للقيام بأكثر من مكالمة عن بعد. ما سيساعد في تشخيصه أكثر من ذلك هو إظهار مثال كامل من خلال simplfying مشكلتك إلى وظيفتين فقط يعمل محليا.
سيساعد ذلك في اكتشاف ما إذا كان حجم DataSet أو قيد الحجم في تكوين الواجهة / الشبكة عن بعد.
بالإضافة إلى ذلك، سيسمح لعينة عمل لشخص آخر بتكرار المشكلة ورؤية معلومات النوع (على سبيل المثال، لا يمكننا رؤية نوع الكائن الذي يرمي الاستثناء ولا يمكنه البحث عن أي قيود في MSDN). أنا متأكد من أن شخصا ما سيكون قادرا على تقديم إجابة نهائية.
إن فعل تقليل الكود الخاص بك إلى عينة سوف في حد ذاته ربما تمكنك من العثور على السبب.
ريان