تبلیغات :
ماهان سرور
آکوستیک ، فوم شانه تخم مرغی ، پنل صداگیر ، یونولیت
دستگاه جوجه کشی حرفه ای
فروش آنلاین لباس کودک
خرید فالوور ایرانی
خرید فالوور اینستاگرام
خرید ممبر تلگرام

[ + افزودن آگهی متنی جدید ]




نمايش نتايج 1 به 6 از 6

نام تاپيک: یک سوال مبتدی (thread)

  1. #1
    داره خودمونی میشه
    تاريخ عضويت
    Jun 2006
    پست ها
    46

    پيش فرض یک سوال مبتدی (thread)

    باسلام
    من یک برنامه دارم که در آن یک thread رو ایجاد می کنم و این ترد یک متد را که در آن یک لوپ است اجرا می کند
    درون این لوپ هر بار باید یک پیغام داخل تکست باکس روی فرم نمایش داده شود ولی این طور نمی شود یعنی دسترسی به تکست باکسی که در ترد اصلی برنامه ایجاد شده است امکان ندارد؟؟!
    چطور باید این مشکل را حل کنم
    مثلا شما یک ترد می سازید که یک لوپ را بی نهایت تکرار می کند و این لوپ باید درون تسکت باکس هر بار عددی را نمایش دهد
    در ضمن برای این من این کار را می کنم چون اگر ترد اصلی برنامه را بکار بگیرم چیزی داخل تسکت باکس به صورت لحظه ای نمی بینم و باید لوپ تمام شود تا بتوانم آخرین استرینگ داخل تکست باکس را ببینم برای همین بنده یک ترد دیگر ایجاد کرده ام ولی به این مشکل برخورد کرده ام
    ممنون می شوم اگر راهنمایی کنید
    با تشکر

  2. #2
    حـــــرفـه ای
    تاريخ عضويت
    Aug 2006
    پست ها
    793

    پيش فرض

    سلام.
    سوالتون اصلا یه سوال مبتدی نیست.
    کسی که سر و کارش با Thread میافته حداقل یه برنامه نویس متوسط هست.
    فکر میکنم Category کنترل TextBox شما از نوع value هست.
    مثلا یه variable از نوع string برای TextBox انتخاب کردید.
    برای اینکه هر بار بعد از تغییر مقدار این variable بتونید اون رو نمایش بدید باید از UpdateData استفاده کنید.
    ولی استفاده از این متود در یک Thread به اصطلاح unsafe و میشه گفت خطرناک هست.

    من دو پیشنهاد برای شما دارم.

    1- از متود SetDlgItemText استفاده کنید. یک pointer از DlgClass ایجاد کنید و توسط این اشاره گر
    از این متود استفاده کنید. (ThreadFunc یه تابع static هست و نمتونید به طور مستقیم از اعضای public
    کلاس در اون استفاده کنید.)
    مثلا به این شکل :
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    ID کنترل TextBox این عبارت انتخاب شده : IDC_THREAD

    2- Category کنترل TextBox رو control انتخاب کنید. و از تابع SetWindowTest استفاده کنید.
    به شکل زیر :

    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    m_th از نوع کنترل (از کلاس CEdit) انتخاب شده.
    اگه مشکلی پیش اومد اطلاع بدید.
    ممنون.

  3. #3
    داره خودمونی میشه
    تاريخ عضويت
    Jun 2006
    پست ها
    46

    پيش فرض

    با تشکر اگر می شود یک مثال کامل که یک ترد دیگر در یک لوپ داخل تکست باکس هر بار عددی را می نویسد با سی شارپ بزنید و اگر امکان دارد سرس آن را در سایت قرار دهید
    در ضمن در یک لوپ شما اگر ازمتد آپدیت تکست باکس استفاده کنید درست است که هر بار نمایش می دهد ولی مشکل اصلی اینجاست که شما نمی توانید فرم را تکان دهید و یا اگر بر روی فرم دیگری کلیک کنید و دوباره به فرم بر گردید صفحه فرم سفید می شود و مشکل من هم دقیقا همین است

  4. #4
    حـــــرفـه ای
    تاريخ عضويت
    Aug 2006
    پست ها
    793

    پيش فرض

    دوباره سلام.
    همونطور که گفتم استفاده از UpdateData در یک Threadدرست نیست.( unsafe & dangerous code )
    البته این مورد در ++VC هست چون در #C این تابع هر با بعد اجرای Text. اجرا میشه و نیازی به Update کردن
    کنترل مورد نظر نیست. در مورد متود هایی که صحبت کردیم بر میگرده به MFC . چون نگفته بودید که از چه زبانی
    استفاده میکنید.
    NotResponding شدن برنامتون ممکنه به دلیل Thread Priority ی باشه که برای برنامه انتخاب کردید.
    در #C میتونید از Threading Namespace و Thread Class استفاده و برای priority میتونید از Thread.Sleep
    استفاده کنید.
    یه نمونه براتون میذارم اگه مشکلی بود اطلاع بدید.

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

    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    counter اسم کنترل TextBox هست.
    ممنون.

  5. #5
    داره خودمونی میشه
    تاريخ عضويت
    Jun 2006
    پست ها
    46

    پيش فرض

    someone عزیز سلام
    خسته نابشید مشکلم رو حل کردیدببخشید که یکم دیر شد
    واقعا با وجود انسان هایی مثل شما آدم امید وار میشه انسان هایی که به دیگران کمک می رسانند
    خدا خیرتون بده ان شاء الله که دایما در حال پیشرفت و در راه موفقیت باشید
    خدا نگهدارتون باشه

  6. #6
    داره خودمونی میشه
    تاريخ عضويت
    Jun 2006
    پست ها
    46

    پيش فرض

    someone عزیز سلام
    خسته نابشید مشکلم رو حل کردیدببخشید که یکم دیر شد
    واقعا با وجود انسان هایی مثل شما آدم امید وار میشه انسان هایی که به دیگران کمک می رسانند
    خدا خیرتون بده ان شاء الله که دایما در حال پیشرفت و در راه موفقیت باشید
    خدا نگهدارتون باشه

Thread Information

Users Browsing this Thread

هم اکنون 1 کاربر در حال مشاهده این تاپیک میباشد. (0 کاربر عضو شده و 1 مهمان)

User Tag List

قوانين ايجاد تاپيک در انجمن

  • شما نمی توانید تاپیک ایحاد کنید
  • شما نمی توانید پاسخی ارسال کنید
  • شما نمی توانید فایل پیوست کنید
  • شما نمی توانید پاسخ خود را ویرایش کنید
  •