واضح آرشیو وب فارسی:سایت ریسک: lucky_002013-07-2007, 09:35 PMبا سلام و سپاس از گرد آورندگان این سایت فوق العاده این اولین باره که مزاحم شما می شم.امیدوارم بتونم براتون جبران کنم:10: من با vb 6 برنامه ای نوشتم که در اون یک loop پورت سریال رو می خونه و بعد در دیتا بیس ذخیره می کنه . و خیلی مهمه که این loop اصلا متوقف نشه .اما وقتی تو این برنامه یه فرم دیگه باز بشه یا هر Event دیگه ای بیاد ،این Loop در همون لحظه متوقف می شه.و بعد از بسته شدن اون فرم دوباره ادامه پیدا می کنه.البته در مورد بعضی Event ها ،این Loop کاملا متوقف می شه تا زمانی که برنامه دوباره شروع شه. قصد دارم کاری کنم که حتی با باز شدن یک فرم دیگه ، این Loop بعد از Load شدن آن فرم ادامه پیدا کند. همین طور برای Event های دیگر می خواهم در یک صف قرار بگیرند.یعنی یکبار Loop اجرا شود بعد یک Event پاسخ داده شود.بعد دوباره Loop بعد Event دیگر...... آیا امکان داره من رو راهنمایی کنید؟ سپاسگذارم:11: lucky_002014-07-2007, 05:32 AMدوستان فراموش کردم بگم که خودم این مشکل رو حل کردم.اما احتمال میدم دوستان حرفه ای که در این جا حضور دارند راه حل بهتری داشته باشند.مرسی lucky_002014-07-2007, 08:25 PMدوستان لطفاً هل نشید ،یکی یکی جواب بدید به همتون می رسه.:31: SuB16-07-2007, 06:11 PMاحتمالاً شما توی حلقه تون، دستور DoEvents رو گذاشتید. چون من تا اونجایی که دیدم و اطلاع دارم وقتی از حلقه ها توی وی بی استفاده می کنید، چنان از CPU استفاده می کنه که وقت نمیشه به رویدادها رسیدگی کنه. شما اگه بنویسید که توی حلقه چی چیزهایی نوشتید شاید بتونم کمک کنم. (در واقع من منظور شما رو درست نفهمیدم) lucky_002016-07-2007, 08:34 PMدوست عزیز ممنون از لطفتون و وقتی که گذاشتید. فکر کنم من توضیحاتم کافی نبوده، این حلقه از زمان استارت برنامه شروع می شه و تا برنامه بسته نشه ادامه داره.در نتیجه اگه Doevent نداشته باشه سیستم نمی تونه کار دیگه ای انجام بده.من هدف برنامه رو می گم شاید بهتذ باشه: یک دستگاه الکترونیکی وجود داره که این دستگاه در هر لحظه اطلاعات وردیش رو مثل ساعت و تاریخ و .... به پورت سزیال می فرسته،البته به شکل اتوماتیک نمی فرسته بلکه از طریق برنامه ای که من نوشتم بهش فرمان مدم که بفرسته.اما اگر تعداد این دستگاهها زیاد شد مثلاً 100 تا،من باید به نوبت به دستگاهها فرمان بدم. وقتی فرمان به آخرین دستگاه رسید و اون هم اطلاعات خودش رو فرستاد و من هم از پورت سریال خوندم این دفعه دوباره به اولین دستگاه فرمان میدم و این چرخه ادامه داره. حالا در این برنامه مثلاً من می خوام گزارش اطلاعات رسیده رو ببینم.و این حلقه هم به طور منظم اطلاعات پورت رو بخونه.به محض این که فرم مربوط به گزاشات باز می شه ،حلقه متوقف می شه. یعنی تا فرم رو نبندم هیچی از پورت نمی خونه. من می خوام جلوی این وقفه رو بگیرم.و دنبال یه راه مطمئن هستم.آیا می تونید کمکم کنید؟ SuB17-07-2007, 12:12 PMدوست عزیز ممنون از لطفتون و وقتی که گذاشتید. فکر کنم من توضیحاتم کافی نبوده، این حلقه از زمان استارت برنامه شروع می شه و تا برنامه بسته نشه ادامه داره.در نتیجه اگه Doevent نداشته باشه سیستم نمی تونه کار دیگه ای انجام بده.من هدف برنامه رو می گم شاید بهتذ باشه: یک دستگاه الکترونیکی وجود داره که این دستگاه در هر لحظه اطلاعات وردیش رو مثل ساعت و تاریخ و .... به پورت سزیال می فرسته،البته به شکل اتوماتیک نمی فرسته بلکه از طریق برنامه ای که من نوشتم بهش فرمان مدم که بفرسته.اما اگر تعداد این دستگاهها زیاد شد مثلاً 100 تا،من باید به نوبت به دستگاهها فرمان بدم. وقتی فرمان به آخرین دستگاه رسید و اون هم اطلاعات خودش رو فرستاد و من هم از پورت سریال خوندم این دفعه دوباره به اولین دستگاه فرمان میدم و این چرخه ادامه داره. حالا در این برنامه مثلاً من می خوام گزارش اطلاعات رسیده رو ببینم.و این حلقه هم به طور منظم اطلاعات پورت رو بخونه.به محض این که فرم مربوط به گزاشات باز می شه ،حلقه متوقف می شه. یعنی تا فرم رو نبندم هیچی از پورت نمی خونه. من می خوام جلوی این وقفه رو بگیرم.و دنبال یه راه مطمئن هستم.آیا می تونید کمکم کنید؟ اگه درست منظورتون رو فهمیده باشم، میتونید این حلقه رو به صورت یک سرنخ در بیارید. این طوری این حلقه تا هر زما که بخواید، اجرا میشه و متوقف نمیشه.:20: اگه بازم نشد، باید سورس برنامه رو اینجا بزارید یا برام ارسال کنید.:46: SuB17-07-2007, 01:42 PMسلام من خودم امتحان کردم. بله درسته. حق با شماست. توی VB اگه یک سری دستور در حال اجرا باشند، و دستور دیگری نیز بخواد اجرا بشه، اولویت با دستور جدید هست. برای اینکار احتمالاً شما از timer استفاده کردید. اگه این کار رو کردید، باید بگم که تایمر روش خوبی نیست. چون حداقل فاصله زمانی بین اجرای دستورانی که در تایمر قرار دارند، یک میلی ثانیه است و در این مدت، خیلی کارها می توان انجام داد. این مشکل شما به این خاطر هست که هر پروژه در VB یک سر نخ یا ریسمان محسوب می شود. پس شما باید برای رفع مشکل، دستوراتی که نیاز دارید هیچگاه متوقف نشوند را در ریسمانی قرار دهید و آنرا اجرا کنید. مقالاتی در این مورد وجود دارد. ولی این رو بدونید که این کار با API ها انجام میشه. در استفاده از سرنخ ها در VB باید توجه داشت که استفاده از چند سر نخی (چند ریسمانی) در هنگامی که برنامه هنوز به صورت سورس است (به صورت Exe در نیامده است) مشکل ساز است و ویرایشگر VB، با چند ریسمانی میانه خوبی ندارد. lucky_002020-07-2007, 12:56 AMسلام دوست عزیر. ممنون از وقتی که گذاشتید. من امروز پاسخ شما رو دیدم.ایده خیلی خیلی خوبی بود.من این مشکل رو به روش دیگه ای حل کردم.اما فکر می کنم راه حل شما بهتر جواب بده .امتحان می کنم بعد نتیجه رو خدمتتون عرض می کنم. سپاسگذارم دوست عزیز:11: سایت ما را در گوگل محبوب کنید با کلیک روی دکمه ای که در سمت چپ این منو با عنوان +1 قرار داده شده شما به این سایت مهر تأیید میزنید و به دوستانتان در صفحه جستجوی گوگل دیدن این سایت را پیشنهاد میکنید که این امر خود باعث افزایش رتبه سایت در گوگل میشود
این صفحه را در گوگل محبوب کنید
[ارسال شده از: سایت ریسک]
[مشاهده در: www.ri3k.eu]
[تعداد بازديد از اين مطلب: 542]