View Full Version : سوال: جلوگیری از وقفه در تبادل اطلاعات با دیتابیس هاست
hrj1981
یک شنبه 16 آبان 1389, 14:09 عصر
با سلام
دوستان برای ارتباط یا تبادل اطلاعات با یک دیتابیسی که روی هاست می باشد حداقل چند ثانیه زمان لازم است (دایال آپ) ، و همین مسئله باعث ایجاد وقفه در کل برنامه می شود یعنی شما به فرمهای دیگر دسترسی ندارید تا ارتباط برقرار شود ، حال اگر بخواهیم این وقفه را در قالب یک پروگرس بار نمایش دهیم و سیستم هم متوقف نشود به راهنمایی استادید نیازمندم
محسن شامحمدی
جمعه 21 آبان 1389, 09:09 صبح
نظر بنده:
اگر با adodc وصل مي شيد مي تونيد اول فرم رو لود كنيد و بعدش مقدار كانكشن استرينگ رو تنظيم كنيد و بعدش رفرش كنيد.
اينطوري فرمتون به راحتي باز ميشه و فقط چند ثانيه طول مي كشه بشه باهاش كار كرد و وقفه پيش نمياد.
Felony
جمعه 21 آبان 1389, 12:19 عصر
برای اینکه عملیات اتصال به بانک و ... داره تو Thread اصلی برنامه پردازش میشه ، میتونید یه Thread جدید ایجاد کنید و عملیات اتصال و تبادل اطلاعات با بانک رو تو اون Thread انجام بدید تا وقفه ای در کار اصلی برنامه پیش نیاد .
hrj1981
جمعه 21 آبان 1389, 13:41 عصر
برای اینکه عملیات اتصال به بانک و ... داره تو Thread اصلی برنامه پردازش میشه ، میتونید یه Thread جدید ایجاد کنید و عملیات اتصال و تبادل اطلاعات با بانک رو تو اون Thread انجام بدید تا وقفه ای در کار اصلی برنامه پیش نیاد .
با تشکر از شمامیتونید یک مقدار بیشتر این حالت رو توضیح بدید
Felony
جمعه 21 آبان 1389, 16:13 عصر
با تشکر از شمامیتونید یک مقدار بیشتر این حالت رو توضیح بدید
در ویندوز هر برنامه حداقل از یک Thread تشکیل شده ، Thread اصلی ( Main Thread ) که به طور پیش فرض توسط خود برنامه ساخته میشه وظیفه کنترل و پردازش تمامی دستورات رو به تنهایی بر عهده داره ، از پردازش پیغام های رسیده به پنجره برنامه و رسم کنترل ها و ... گرفته تا اجرای کدهای نوشته شده همه در هیمن Thread انجام میشن ؛ Thread رو به عنوان یک لوله در نظر بگیرید که در هر ثانیه مقدار مشخصی رو میتونه انتقال بده ، با این اوصاف چه 2 خط کد داشته باشید چه 2000 خط کد اینها باید به ترتیب اجرا بشن چون اون لوله ( Thread ) یه ظرفیت خاصی داره ، وقتی شما کدی رو اجرا میکنید که پردازش اون زمان بر هست ( حلقه یا همین اتصال به بانک توی شبکه ) Thread اصلی برنامه مشغول پردازش اون کد میشه و تا زمانی که کار پردازش اون کد تموم نشه لوله پر هست و پردازش دیگه ای نمیتونه انجام بشه ، پس با توجه به گفته های بالا وقتی میخوای به بانک وصل بشه داری تو Thread اصلی برنامه این کار رو انجام میدی یعنی همون جایی که رابط کاربری برنامت هم به روز میشه پس Thread مشغول پردازش کد مورد نظر شما میشه و چون لوله پر شده کد دیگه ای از قبیل به روز رسانی رابط کاربری نمیتونه انجام بشه و برنامه فریز میشه تا اون پردازش تموم بشه ، شما میتونید با کد نویسی برای برنامه خودتتون مسیر های جدیدی ایجاد کنید ( Thread جدید بسازید ) و سربار پردازش رو از روی Thread اصلی برنامه بردارید و کارهای زمان بر رو به Thread هایی که خودتون ساختید بسپارید ، در این صورت Thread اصلی کارهای معمول رو انجام میده و هیچ وقت درگیر کارهای زمان بر نمیشه و در عوض Thread ی که خودتون ساختید کار زمان بر رو انجام میده و برنامه هیچ وقت فریز نیمشه چون Thread اصلی که وظیفه ترسیم کنترل ها رو هم بر عهده داره همیشه آزاد هست .
برنامه های بزرگ مثل همین ویندوز همگی از این روش که در ادبیات نرم افزار Multi Threading ازش نام برده میشه استفاده میکنن و برای همین هست که مثلا تو برنامه Word همزمان میتونید چندین کار انجام بدید و هیچ مشکلی هم برای رابط کاربری برنامه پیش نمیاد .
@ Thread در فارسی به معنای نخ هست و من فقط برای تفهیم از واژه لوله استفاده کردم .
موفق باشید .
hrj1981
پنج شنبه 04 آذر 1389, 17:56 عصر
دوستان سلام
به نظر من این بحث Thread که جناب تاجیک مطرح کردند برای همه ما بسیار مفیده و می تونیم برنامه های قدرتمندی را با هاش جمع کنیم ، مخصوصا تو بحث شبکه و بانکهای اطلاعاتی.
من توی اینترنت متاسفانه مثال ساده ای برای باز کردن توی این تایپیک پیدا نکردم ، از دوستانی که توی این زمینه سر رشته دارن می خواهم کمک کنن تا بتونیم این بحثو بیشتر برای بچه های انجمن بشناسونیم
اگه میشه این مثالو بصورت سورس توضیح بدید.
ما می خواهیم برای ارتباط با یک دیتابیس راه دور یک کانکشن بسازیم (فرض اینه که نحوه کانکشنو بلدیم) و این کانکشن باید هنگام لود شدن فرم اطلاعات رو بخونه و داخل یک گرید بریزه ، ولی نمی خواهیم کل فرم یا برنامه منتظر برقراری کانکشن بشه و ما بتونیم به سایر عناصر فرم یا برنامه دسترسی داشته باشیم
Javad-2010
پنج شنبه 18 فروردین 1390, 08:57 صبح
استفاده از Thread در VB6 بیفایده است، چون VB6 از Thread به خوبی پشتیبانی نمیکنه.
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.