صفحه 1 از 1
استفاده از پروگرس بار در datagrid
ارسال شده: دوشنبه ۱۵ شهریور ۱۳۸۹, ۴:۱۰ ب.ظ
توسط MRSTAR
با سلام خدمت دوستان
من یه datagrid رو فرم گذاشتم و اونو به یه دیتابیس access وصل کردم وقتی یه اسمو تو اون جستجو میکنم یه مدت طول میکشه
میخواستم ببینم راهی هست تا زمان مورد نیاز رو استخراج کنیم و به یه پروگرس بار بدیم تا کاربر بدونه برنامه در حال کاره و جواب رو کی میده ؟
سرعت جستجو رو چطوری بالا ببریم ؟
ممنون از لطف تون
Re: استفاده از پروگرس بار در datagrid
ارسال شده: دوشنبه ۱۵ شهریور ۱۳۸۹, ۵:۱۶ ب.ظ
توسط arashtabaie
همونطور که میدونید برنامه ی شما و DBMS دارن به صورت دو thread مجزا و جدا از هم اجرا میشن. در نتیجه این امکان که مثلا برا ایجاد یک progress bar شما میزان پیشرفت زمانی پاسخ DB به queryتون رو بخواید بدونید یک سرویسی هست که باید از طریق DBMS به شما ارائه بشه که بسیاری از اونها (از جمله access, sql server و...) این امکان رو در اختیار شما نمیگذارن. پس شما به شکل تر و تمیز نمیتونید این کار رو بکنید و ابزاری برای این کار در اختیارتون قرار نگرفته. اگر بخواید این کار رو حتما انجام بدید باید از یه طریق دیگه ای وارد بشید. مثلا چیزی که الان به ذهن من رسید اینکه با استفاده از یک query جداگانه affected row count رو از دیتا بیس بگیرید، بعد خودتون cursor دیتا بیس رو به دست بگیرید و مثلا هر سری یک درصد مشخصی از داده ها رو به برنامه تون برگردونید(همش با استفاده از امکانات DBMS و ایجاد Stored Procedureها) که از این طریق progress barتون درست کار کنه. همونطور که حتما به نظر خودتون هم رسیده اینکار باعث میشه که کدتون زیاد، کثیف و برنامه تون کند شه. در نتیجه من پیشنهاد میکنم که برای نشان دادن فعال بودن برنامه به کاربر در حین اجرای queryهای سنگین از marquee progress bar استفاده کنید(مانند همون که موقع سرچ در ویندوز نشان داده میشه و مرتب میاد و میره...). فقط توجه کنید که برای اینکه صفحه ی UIتون بلاک نشه (در طول مدت انجام query) و progress bar رو نشان بده باید دسترسی به دیتا بیس رو در thread جداگانه ای راه اندازی کنید.
موفق باشید...

Re: استفاده از پروگرس بار در datagrid
ارسال شده: دوشنبه ۱۵ شهریور ۱۳۸۹, ۵:۵۱ ب.ظ
توسط MRSTAR
ممنون Captain II
اما شما خیلی سطح بالا نوشتی اگه میشه یه خورده ساده و با یه مثال عملی توضیح بدی خیلی ممنون میشم

Re: استفاده از پروگرس بار در datagrid
ارسال شده: دوشنبه ۱۵ شهریور ۱۳۸۹, ۶:۵۳ ب.ظ
توسط arashtabaie
خلاصه ترین حالت ممکن اینه که اون کاری که شما میخواستین انجام بدین برای شما امکانش وجود نداره. در صورت نیاز میتونید از حالت marqueeی پروگرس بار برای نشان دادن در حال فعالیت بودن برنامه استفاده کنید. به توضیحات راجع به threading هم در هنگام کد زدن توجه کنید.