PDA

View Full Version : اجرای یک پروسه زمان بر در رویداد Mouse Move



smt1383
یک شنبه 07 شهریور 1389, 15:35 عصر
با سلام خدمت دوستان
من در برنامه ام می خواهم وقتی کاربر موس را روی فرم حرکت می دهد در رویداد On Mouse Move با توجه به مختصات فعلی موس، یک پروسه ای انجام پذیرد (مانند جستجو در یک جدول بزرگ بر اساس مختصات موس) و یک نتیجه ای را برگرداند و نمایش دهد. اما چون این پروسه خیلی طولانی است برنامه دچار مشکل می شود و حرکت موس خیلی کند و به صورت پرشی می شود. می خواستم بدانم راه حل این مشکل چیست. آیا باید رویداد Mouse Move در یک Thread جداگانه اجرا شود یا راه حل دیگری هم وجود دارد.
ممنون

shahab_ss
یک شنبه 07 شهریور 1389, 16:23 عصر
دوست من ،برای عمل جستجو شما در واقع بدترین Event رو انتخاب کردی!!!
مسلماً حرکت موس کند میشه وقتی با کوچکترین تغییر در مختصات موس شما عملیات جستجو رو اجرا میکنی.

بهتر ه که راه دیگه ای برای این کار پیدا کنی ، به نظر من این کار از اساس مشکل داره!
اگر بیشتر در مورد کاری که میکنی توضیح بدی شاید بتونم کمکت کنم

موفق باشی

smt1383
یک شنبه 07 شهریور 1389, 17:27 عصر
دوست من ،برای عمل جستجو شما در واقع بدترین Event رو انتخاب کردی!!!
مسلماً حرکت موس کند میشه وقتی با کوچکترین تغییر در مختصات موس شما عملیات جستجو رو اجرا میکنی.


ممنون. اما من چاره ای جز این ندارم. این چیزیه که من نیاز دارم. باید با تغییر موس بلافاصله موقعیت موس را بفهمم و سپس در یک آرایه بزرگ جستجو کنم و مقدار متناظر با آن را برگردانم و نشان دهم.
ممنون

محسن شامحمدی
یک شنبه 07 شهریور 1389, 18:02 عصر
شاید رویداد mouse enter بدردتون بخوره.
اگه نخورد و تنها راهتون همینه پس حداقل از multithreading استفاده کنید.

ali_autumnal
یک شنبه 07 شهریور 1389, 21:59 عصر
دوست من ،برای عمل جستجو شما در واقع بدترین Event رو انتخاب کردی!!!
مسلماً حرکت موس کند میشه وقتی با کوچکترین تغییر در مختصات موس شما عملیات جستجو رو اجرا میکنی.


باید از multithreading استفاده کنی.

جز این راه حلی بذهن من نمیرسه.

موفق باشید
علی پایزی

afi_program
دوشنبه 08 شهریور 1389, 02:19 صبح
اگه واقعا مجبور به انجام همچين عملي هستي منم فكر ميكنم تنها راه اينه كه بزاريش تو thread ديگه

smt1383
شنبه 13 شهریور 1389, 13:15 عصر
از همه دوستانی که روش MultiThreading را پیشنهاد دادند ممنونم. فقط من نمی دانم که باید چگونه یک رویداد را در یک Thread دیگر اجرا کنم. و اینکه چگونه جستجو برای هر نقطه در یک Thread جداگانه انجام گیرد. ممنون می شوم اگر دوستان راهنمایی کنند.
با تشکر

علیرضا حسن زاده
شنبه 13 شهریور 1389, 15:22 عصر
از همه دوستانی که روش MultiThreading را پیشنهاد دادند ممنونم. فقط من نمی دانم که باید چگونه یک رویداد را در یک Thread دیگر اجرا کنم. و اینکه چگونه جستجو برای هر نقطه در یک Thread جداگانه انجام گیرد. ممنون می شوم اگر دوستان راهنمایی کنند.
با تشکر
کارهایی رو که می خوای انجام بدی با کامپوننت Background Worker انجام بده اگه کار با Thread رو بلد نباشی شستفاده از این کامپوننت راحت ترین روشه

smt1383
شنبه 13 شهریور 1389, 16:01 عصر
کار کردن با Thread را تا حدودی بلدم. اما نمی دانم چگونه یک Event را در Thread دیگر انجام دهم. همچنین نمی خواهم پردازش تمام نقطه ها در Thread دوم انجام شود بلکه پردازش هر نقطه در یک Thread جداگانه انجام شود با توجه به اینکه تابع پردازش نقطه ها یکی است.

afi_program
پنج شنبه 18 شهریور 1389, 21:31 عصر
هر نقطه توي يه thread ؟
مگه نقاط حركت ماوس مد نظرت نيست؟اگه اينجوري باشه يعني تقريبا تعداد نامحدود thread !
كار با اينهمه thread و كنترلشون خيلي مشكل و حتي ميشه گفت غير ممكنه.نه تنها براي برنامه نويس بلكه براي سيستم عامل هم وحشتناكه.
موفق باشيد