سؤال

أنا الحصول على 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). أنا متأكد من أن شخصا ما سيكون قادرا على تقديم إجابة نهائية.

إن فعل تقليل الكود الخاص بك إلى عينة سوف في حد ذاته ربما تمكنك من العثور على السبب.

ريان

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top