PDA

View Full Version : سوال: چطور حافظه مصرفی توسط مرورگر رو خالی کنم ؟



sajadzare
شنبه 06 مهر 1392, 15:59 عصر
سلام

من یه برنامه اتوماسیون تحت وب نوشتم که با مرورگر اکسپلورر باز میشه. نحوه کار این طوره که ابتدا صفحه اصلی رو در مرورگر باز کرده و لاگین میکنم و این صفحه باید در طول عملیات اتوماسیون باز باشه و بسته نشه چون از سیستم خارج میشه. و نرم افزار من میاد و در یک حلقه مثلا 100 تایی یه مرورگر جدید new IE باز میکنه و عملیات رو انجام میده و مرورگر رو میبنده. با دستور browser.close و این کار به تعداد انتهای حلقه تکرار میشه. و من در taskmanager می بینم که با اینکه مرورگر بسته میشه ولی حافظه مصرفی خالی نمیشه و در تکرارهای بعدی میزان بیشتری به iexplore.exe تخصیص میده . این مشکل زمانی حاد میشه که تعداد تکرارها زیاد باشه و حافظه سرریز میکنه و دیگه مرورگر چیزی رو باز نمیکنه. من با دستور dispose هم نتونستم حافظه مصرفی رو خالی کنم.

یه راه هم به ذهنم رسید این بود که پروسس باز شده رو kill کنم که متاسفانه مرورگر اصلی که لاگین در اون انجام دادم رو میبنده . تصمیم داشتم که وقتی مرورگر جدید ایجاد شد process id ش رو ذخیره کنم . و بر اساس اون بیام و process iexplore رو ببندم که مرورگر اصلی بسته نشه ولی احساس میکنم راههای بهتری برای اینکار وجود داره و از شما میخوام اگه روش بهتری رو برای این مشکل سراغ دارین بهم کمک کنین.

ممنونم

arefba
شنبه 06 مهر 1392, 17:46 عصر
چرا اگه اون صفحه لاگین رو ببندی از برنامه ات خارج میشه ؟
مگه سشن تایم اوت واسه چی درست شده که این کار رو می کنید ؟

arefba
شنبه 06 مهر 1392, 17:48 عصر
یه چیز دیگه برنامه تحت وب مگر نیست پس کشتن پروسه ربطی به کلاینت نداره
و با کد سی شارپ نمیتونی اینکار رو بکنی و کدشم که بنویسی اینکار در سرور صورت می گیره نه در کلاینت هات
پس باید بری سراغ جاوا اسکریپت

sajadzare
شنبه 06 مهر 1392, 18:13 عصر
دوست عزیز. تحت وب نیست اشتباه کردم. یه برنامه تحت وب هست که من با یه اپلیکیشن ویندوزی دارم اونو کنترل میکنم . مثل برنامه ای که میاد و به صورت خودکار سایتی رو باز میکنه تکست باکسها رو پر میکنه و دکمه ای رو میزنه یه چیز خودکار که به دفعات زیاد تکرار میشه. اینها اصلا مهم نیست. سوال من اینه چطور میشه پروسس های اکسپلورر که باز میشه و بعد بسته میشه حافظه تخصیص یافته ش رها بشه. فکر کنم این مبحث مهمی باشه به مسائل حاشیه ای نپردازین اصل موضوع رو جواب بدین.