PDA

View Full Version : پیغام خطا در حین بستن یک برنامه کلاینت-سروری



AlirezaBahredar
یک شنبه 06 خرداد 1386, 10:49 صبح
سلام:
من یک برنامه کلاینت سروری دارم که با Indyنوشته شده.مشکلی که هست اینه که وقتی کلاینت به سرور اتصال پیدا می کنه ویک فایل رو دریافت میکنه همه چیز عالی کار می کنه.ولی به محض اینکه برنامه سرور بسته میشه(یعنی کلا از برنامه سرور خارج میشیم) پیغام خطا زیر داده میشه.

لازمه اینو بگم که من کلیه اصول ابتدای ارسال ودریافت فایل مثله بستن فایل در انتهای ارسال و....رو رعایت کردم.کلیه حافظه هایی که در حین برنامه تخصیص داده میشه رو Freeمیکنم وهمچنین مطمئن هستم که زمان انفصال از سرور ,سرور دیسکانکت شده است.
باتشکر

dkhatibi
یک شنبه 06 خرداد 1386, 11:03 صبح
برنامه در صورتیکه فایلی ردوبدل نمی شه درست بسته می شه؟

AlirezaBahredar
یک شنبه 06 خرداد 1386, 11:15 صبح
آره دوست عزیز......برنامه تا زمانی که فایلی ردوبدل نشه کاملا درست کار میکنه.

Mahmood_M
یک شنبه 06 خرداد 1386, 15:01 عصر
سلام
آیا در برنامتون از Thread ها استفاده می کنید ؟
آیا عمل ارسال فایل در یک Thread جدا انجام میشه ؟ آیا یک Thread List دارید برای کلاینتها ؟

...

AlirezaBahredar
یک شنبه 06 خرداد 1386, 18:33 عصر
باسلام:
میدونید چیه؟ تا جایی که من توی اینترنت جستجو کردم این مشکل یک مشکل SP1 ویندوز XPبوده که با نصب SP2 حل میشده اما من سرویس پک 2رو روسیستمم دارم وجای تعجب هست.در جواب اون دوست عزیز که گفتن آیا Threadدارم یا نه؟بله برنامه با تعدادی Thread کار میکنه در واقع هر کلاینتی که به سرور متصل میشه واسش یک نخ ایجاد میشه.ولی زمان خروج کلیهThread ها Terminate میشن......

vcldeveloper
دوشنبه 07 خرداد 1386, 08:07 صبح
دوست عزیز، کسی که نمیاد از قصد توی برنامه اش مشکل بزاره، همه فکر می کنند که تمام جوانب کار را رعایت کردند، وقتی برنامه اجرا میشه، متوجه میشند که خیلی از جزئییات را فراموش کردند. اینکه شما میگید: "من کلیه اصول ابتدای ارسال ودریافت فایل مثله بستن فایل در انتهای ارسال و....رو رعایت کردم"، اما برنامه تون درست عمل نمیکنه، یعنی یک جای کار را اشتباه کردید. اینکه کجای کار را اشتباه کردید را نمیشه با توضیحاتی که در بالا دادید، متوجه شد.
یک احتمال می تونه این باشه که شما سعی می کنید در داخل یکی از Thread های برنامه به پنجره خاصی دسترسی داشته باشید یا براش پیغام ارسال کنید، در حالی که اون پنجره قبل از اتمام کار Thread از حافظه خارج شده.

AlirezaBahredar
دوشنبه 07 خرداد 1386, 12:13 عصر
بابت اظهار نظرتون ممنون(آقای کشاورز).....
اما جهت اطاعتون چند مورد و متذکر میشم.....
1-حق با شماست هیچکس عمدا توی کد برنامه اش باگ نمیذار....اینم که من گفتم "اصول ابتدایی" بابت این بود که دوستانی که لطف می کنن راهنمایی می کنند در جریان باشن که اشکال کار من از نبستن یا آزاد کردن فایل و حافظه نیست.اگر راهنمایی دیگه ای دارن لطف کنند و مطرح کنند.
2-همون طوری که گفتم نتایج جستجوی من توی اینترنت خلاصش به اینجا رسید کهError Code:1400 یک باگ ویندوز هست که در SP1 وجود داشته ودر نسخه بعدی یعنی SP2 حل شده.اما روی سیستم من Windows XP SP2 نصب هست....می خواستم ببینم کسی تا حالا با این مشکل برخورد کرده یا نه....
با تشکر از همه دوستان.

Mahmood_M
دوشنبه 07 خرداد 1386, 12:53 عصر
سلام

1-حق با شماست هیچکس عمدا توی کد برنامه اش باگ نمیذار....اینم که من گفتم "اصول ابتدایی" بابت این بود که دوستانی که لطف می کنن راهنمایی می کنند در جریان باشن که اشکال کار من از نبستن یا آزاد کردن فایل و حافظه نیست.اگر راهنمایی دیگه ای دارن لطف کنند و مطرح کنند
آیا مطمئنید که مشکل شما از این قسمتها نیست ، هیچ وقت نمی شه مطمئن بود که در برنامه ایرادی وجود نداره ، تنها آزاد کردن و درستی طریقه آزاد کردن و ... مهم نیست ، بلکه مهمتر از همه اینها زمان آزاد کردن حافظه است ، یادمه خودم یک برنامه ای داشتم می نوشتم و توش از Thread استفاده کرده بودم که درست همچین Error ای اومده بود ، و دلیلش هم این بود که به عناصری میخواستم دسترسی پیدا کنم که دسترسی به اونها از توی Thread ناممکن بود ...
آیا متدهاتون رو Synchronize میکنید ؟


2-همون طوری که گفتم نتایج جستجوی من توی اینترنت خلاصش به اینجا رسید کهError Code:1400 یک باگ ویندوز هست که در SP1 وجود داشته ودر نسخه بعدی یعنی SP2 حل شده.اما روی سیستم من Windows XP SP2 نصب هست....می خواستم ببینم کسی تا حالا با این مشکل برخورد کرده یا نه....
خوب ، وقتی بر روی سیستم شما SP2 نصب هست ولی باز هم این Error وجود داره معنیش می تونه این باشه که شما این مساله رو ( شاید ) در یک منبع غیر موثق پیدا کردید ، متاسفانه این گونه منابع در اینترنت ما به فراوانی یافت می شن ...

برای محکم کاری ، یک بار دیگه کدهاتون رو چک کنید و مطمئن شید که مشکلی نیست و کار به درستی انجام میشه ، مثلا ممکنه یک Thread رو در دو جا Free کرده باشید ، که این مشکل پیش خواهد آمد ...
همچنین بهتره که در مورد نحوه کارتون بیشتر توضیح بدید ، مثلا با چه روشهایی و یا روشی فایل رو ارسال و دریافت میکنید ...
مثلا یک مشکلی که ممکنه رخ داده باشه اینه که شما ، بعد از اتمام ارسال یا دریافت فایل Thread مربوطه رو آزاد میکنید ، و در پایان کار برنامه و در هنگام بستن برنامه باز هم اقدام به آزاد کردن Thread می کنید ...

آیا خودتون Thread خاصی ایجاد میکنید توی برنامه یا فقط Client ها در یک Thread List قرار میگیرند ؟


به هر حال امیدوارم مشکلتون هرچه زودتر حل بشه ...
موفق باشید ...