ورود

نسخه کامل مشاهده نسخه کامل : هنگ نکردن برنامه در زمان کار با دیتابیس



sari-1369
21-02-2010, 00:10
سلام دوستان ، من 2 تا دیتا بیس دارم که گاهی نیاز میشه حجم زیادی از اطلاعات رو بینشون رد و بدل کنم و اینکار حدودا 30 ثانیه طول میکشه . من با زمانش مشکل ندارم ، فقط میخوام وقتی که این عمل داره انجام میشه اگر کاربر رو فرم کلیک کرد با اونرو حرکت داد برنامه هنگ نکنه و یه انیمیشن لودینگ تو این زمان بهش نمایش بدم .

اولین باری هستش که همچین مساله ای برام پیش اومده ، اگه میشه منو راهنمایی کنید .

از ترد باید استفاده کنم ؟ بکگراند ورکر ؟ ... ؟ :31:


پیشاپیش ممنون.

---------- Post added at 12:10 AM ---------- Previous post was at 12:09 AM ----------

راستی ، VB.Net

MTPROG
21-02-2010, 10:40
در تایپک زیر بحثی مشابه به این مورد شده است


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

در لینک زیر یک نمونه کد وجود داره که حجم زیادی از اطلاعات رو بدون هنگ کردن پردازش میکنه


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

sari-1369
24-02-2010, 00:27
اینطور که از تایپیک های پیشنهادی شما متوجه شدم ، منظورتون اینه که از DataReader استفاده کنم .

تا اینجاش اوکی و مشکلی نیست ولی همونطور که تو اون تا گفته شد ، برای گرفتن این اطلاعات از DR باید از یه حلقه استفاده کرد که همین مدت زیادی میبره و برنامه هنگ میکنه .

اجازه بدید بگم کلا وایه چه کاری میخوام .

من توی برنامه ویندوزی اطلاعات حدود 20 جدول SqlServer رو باید به یه بانک کامپکت توی پاکت پیسی انتقال بدم ، و تنها راهش اینه که اطالاعت رو به صورت کلی ( DataTable ) یا سطر به سط (DR ) از بانک برنامه ویندوزی بخونم و به صورت سطر سطر توی بانک کامپکت درج کنم.
تا اینجا اوکی هستش و مشکلی نیست .
اما مشکل من اینجاست که تعداد رکورد های من برای هر جدول میانگیم 200 رکورد هستش و به طور میانگین هر جدول 7 تا ستون داره و حجم داده یه خورده زیاده .

من با سرعت مشکلی ندارم . فقط و فقط میخوام این کاربری که پشت سیستم نشسته تو این 2 دقیقه یه عکس GIF لودینگ ببینه و اگر هم روی فرم کلیک کرد یا اون رو حرکت داد برنامه به فنا نره :31:

sari-1369
05-03-2010, 01:17
یکی مارو راهنمایی کنه :41:

_H2_
05-03-2010, 10:27
سلام
اون تاپیکی که دوستمان جناب MTPROG معرفی کردند، هدفش نمایش ProgressBar است که میزان پیشرفت کار نمایش داده شود.
در مورد کار شما هم استفاده از آن مورد خوب است ولی راه حل دقیق مشکل شما، استفاده از چند ریسمانی است.

شما باید متد کپی خود را در یک ریسمان مجزا اجرا کنید تا ریسمان برنامه اصلی بلوکه نشود و به قول خودتان بتوانید تصویر gif متحرکی هم نمایش دهید.

در خصوص مباحث چند ریسمانی پیشنهاد میکنم تاپیک زیر را مطالعه کنید:
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

اگر قصد نمایش میزان پیشرفت و آپدیت فرم را نداشته باشید به Invoke و BeginInvoke و InvokeRequired هم نیاز ندارید.
فقط کافی است دستورات خود را در ریسمان جدید انجام دهید.

=====

تاپیک مرتبط:
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
موفق باشید.