PDA

View Full Version : سوال: زمان در Directory.GetFiles



ehsan248
سه شنبه 21 اردیبهشت 1389, 14:27 عصر
سلام
من
می خوام توی یک درایوی که بیش از 100000 فایل داره چندین فایل رو پیدا کنم
بالطبع این کار با دستور Directory.Getfiles() سی چهل ثانیه ای طول می کشه می خوام این زمان رو بصورت یک پروگرس باری چیزی نشون بدم که بدونه چقدر باید معطل بمونه کاربر .

با تشکر

mehdi.mousavi
سه شنبه 21 اردیبهشت 1389, 14:47 عصر
سلام
من
می خوام توی یک درایوی که بیش از 100000 فایل داره چندین فایل رو پیدا کنم
بالطبع این کار با دستور Directory.Getfiles() سی چهل ثانیه ای طول می کشه می خوام این زمان رو بصورت یک پروگرس باری چیزی نشون بدم که بدونه چقدر باید معطل بمونه کاربر .

با تشکر

سلام.
اگر منظورتون اون زمانی هستش که معطل می مونید تا متود GetFiles کارش تموم بشه، راهی ندارید. چون این متود یه ضرب میره سراغ IO و روند پیشرفتش رو اعلام نمیکنه. اما اگر منظورتون مدت زمانی هستش که پس از گرفتن نام فایلها، نیاز به پردازش اونها دارید، یعنی بررسی اون 100000 فایل، اینکارو میتونید توی یک Thread دیگه انجام بدید و با استفاده از Notification هایی که به Main Thread ارسال می کنید، خودتون روند پیشرفت بررسی این فایلها رو گزارش کرده و در Main Thread نیز بر اساس نیاز، Progress Bar مورد نظر خودتون رو Update کنید.

موفق باشید.

bpzone
سه شنبه 21 اردیبهشت 1389, 15:52 عصر
با استفاده از Notification هایی که به Main Thread ارسال می کنید


میشه این رو کمی بیشتر لطفاً توضیح بدید ؟

mehdi.mousavi
سه شنبه 21 اردیبهشت 1389, 16:01 عصر
میشه این رو کمی بیشتر لطفاً توضیح بدید ؟

سلام.
اگر از BackgroundWorker استفاده کنید، اینکار در این کلاس پیاده سازی شده و دیگه نیازی نیست تا دستی این Notification ها رو به Main Thread ارسال کنید (در واقع دیگه نیازی به استفاده از Synchronization Object ها و Marshaling داده ها ندارید).

برای آشنایی با نحوه کارکرد BackgroundWorker نیز می تونید به این پست (http://barnamenevis.org/forum/showthread.php?p=880050#post880050) مراجعه کنید.

موفق باشید.