نمایش نتایج 1 تا 7 از 7

نام تاپیک: به‌روزرسانی TextBox , ProgressBar

  1. #1

    به‌روزرسانی TextBox , ProgressBar

    سلام دوستان.
    می‌خواهم TextBox , ProgressBar را به‌روزرسانی کنم. ولی فهمیدم که وسط یک کار دیگر نمی‌شود اینها را به‌روزرسانی کرد.
    بعد پاسخ‌های اینترنتی را که جستجو می‌کردم متوجه شدم که این کار را باید به وسیله‌ی ایجاد یک Thread دیگر انجام داد. ولی نفهمیدم دقیقا چگونه. (همان برنامه‌ای که ارایه دادند را می‌نویسم ایراد می‌گیرد)
    بعد یک سری دیگر گفته‌اند انگار طریقه‌ی اصولی برخورد با این مشکل این است که از Worker Threads and SwingWorker استفاده کنم. ولی باز هم آموزش‌ها در این خصوص شفاف نیست. چه چیزی را باید دقیقا کجا قرار دهم؟
    از دوستان اگر کسی به این مسایل آشنایی دارد درخواست راهنمایی دارم.
    سپاس.

  2. #2

    نقل قول: به‌روزرسانی TextBox , ProgressBar

    نقل قول نوشته شده توسط mhjbarnamenevis مشاهده تاپیک
    سلام دوستان.
    می‌خواهم TextBox , ProgressBar را به‌روزرسانی کنم. ولی فهمیدم که وسط یک کار دیگر نمی‌شود اینها را به‌روزرسانی کرد.
    بعد پاسخ‌های اینترنتی را که جستجو می‌کردم متوجه شدم که این کار را باید به وسیله‌ی ایجاد یک Thread دیگر انجام داد. ولی نفهمیدم دقیقا چگونه. (همان برنامه‌ای که ارایه دادند را می‌نویسم ایراد می‌گیرد)
    بعد یک سری دیگر گفته‌اند انگار طریقه‌ی اصولی برخورد با این مشکل این است که از Worker Threads and SwingWorker استفاده کنم. ولی باز هم آموزش‌ها در این خصوص شفاف نیست. چه چیزی را باید دقیقا کجا قرار دهم؟
    از دوستان اگر کسی به این مسایل آشنایی دارد درخواست راهنمایی دارم.
    سپاس.
    جهت بر روز رسانی یک progress bar باید از طریق نخ اصلی main thread ui به این آبجکت دسترسی پیدا کنید و مقادیری که لازم دارید اعمال کنید بنابراین کافی که یک نخ کارگر ایجاد کنید و عملیاتی که لازم دارید را در این نخ انجام دهید وکافی در زمانهای مناسب در نخ کارگر جدید مقادیر درصد پیشرفت را به نخ اصلی ارسال کنید و چون فقط در نخ اصلی به آبجکتهای UI دسترسی دارید حالا مقادیر فوق را در آبجکت نمایش دهید.
    در صورتی هم که نیازی به چند نخ مختلف جهت انجام عملیات خود ندارید خیلی هم نیازی به رعایت همه تکنیکهای برنامه نویسی چند نخی در جهت رخ ندادن race condition بر روی داده های مشترک ندارید
    یا به صورت واضح تر
    1- ایجاد یک نخ کارگر
    2- استارت عملیات مورد نظرتون در نخ فوق
    3- تعیین یک داده atomic حالا یا استاتیک ویا غیر استاتیک جهت درج درصد پیشرفت در زمان های مناسب در نخ کارگر
    4- به روز رسانی نخ اصلی برنامه و به روز رسانی کنترل progress bar و اعمال داده اتمیک در کنترل فوق
    به همین سادگی مشکلی بود اطلاع دهید

  3. #3

    نقل قول: به‌روزرسانی TextBox , ProgressBar

    نقل قول نوشته شده توسط farhad_shiri_ex مشاهده تاپیک
    جهت بر روز رسانی یک progress bar باید از طریق نخ اصلی main thread ui به این آبجکت دسترسی پیدا کنید و مقادیری که لازم دارید اعمال کنید بنابراین کافی که یک نخ کارگر ایجاد کنید و عملیاتی که لازم دارید را در این نخ انجام دهید وکافی در زمانهای مناسب در نخ کارگر جدید مقادیر درصد پیشرفت را به نخ اصلی ارسال کنید و چون فقط در نخ اصلی به آبجکتهای UI دسترسی دارید حالا مقادیر فوق را در آبجکت نمایش دهید.
    در صورتی هم که نیازی به چند نخ مختلف جهت انجام عملیات خود ندارید خیلی هم نیازی به رعایت همه تکنیکهای برنامه نویسی چند نخی در جهت رخ ندادن race condition بر روی داده های مشترک ندارید
    یا به صورت واضح تر
    1- ایجاد یک نخ کارگر
    2- استارت عملیات مورد نظرتون در نخ فوق
    3- تعیین یک داده atomic حالا یا استاتیک ویا غیر استاتیک جهت درج درصد پیشرفت در زمان های مناسب در نخ کارگر
    4- به روز رسانی نخ اصلی برنامه و به روز رسانی کنترل progress bar و اعمال داده اتمیک در کنترل فوق
    به همین سادگی مشکلی بود اطلاع دهید
    سلام فرهاد عزیز.
    اینجا دکمه‌ی تشکر ندارد (دست کم برای من) و همین‌جوری لفظی از لطفی که کردید تشکر می‌کنم.
    .
    .
    .
    حقیقتش من مبتدی هستم و این چیزهایی که فرمودید بیشتر من را گیج کرد!
    من اصلا با نخ‌ها آشنایی ندارم و نمی‌دانم این نخ اصلی کجاست! (همان تابع main است؟ که مسلما نیست... جایی از برنامه من هم که واژه thread ندارد که من بخواهم بررسی‌اش کنم... )
    پس اجازه بفرمایید یک مقدار در مورد نخ‌ها (و جایی که باید نخ دوم را افزود و ...) بررسی کنم دوباره مزاحمتان بشوم.

  4. #4

    نقل قول: به‌روزرسانی TextBox , ProgressBar

    اما تا من بررسی بکنم...
    ۱- آیا این چند نخ کاری، باعث افت قدرت کار در نخ اصلی نمی‌شود؟ (یعنی ما تنها از نخ دوم انتظار داریم چند تا جعبه متنی را به روز رسانی کند... ولی یک باره نمی‌آید ۳۰-۴۰ درصد از قدرت نخ اصلی را بگیرد؟)
    ۲- آیا این نقص جاوا (کتابخانه‌های موجود جاوا swing) نیست که این کارها را خودشان به عهده نمی‌گیرند و باید برایشان برنامه اضافه نوشت؟ البته من در ترازی نیستم که اصلا بخواهم در این باره اظهار نگر کنم... ولی به نگرم اینها باید تنها با یک فعال یا غیر فعال کردن یک متغیر ساده (یک آرگومان) خود به خود انجام می‌شد... باید در نرم‌افزارهای ادیتور (netbeans) یک همچنین چیزی به صورت بصری گنجانده می‌شد... که آیا دوست داری این خودکار مقادیرش تغییر کند؟ در چه بازه‌ای دوست داری؟ در هنگام انجام کلیه توابع؟ یا در هنگام انجام چند تابع خاص؟ و ... احتمالا نوشتنش سخت هم نیست! نمی‌دانم چرا همچنین چیزی را انجام نداده‌اند...

  5. #5

    نقل قول: به‌روزرسانی TextBox , ProgressBar

    من اصلا با نخ‌ها آشنایی ندارم و نمی‌دانم این نخ اصلی کجاست! (همان تابع main است؟ که مسلما نیست... جایی از برنامه من هم که واژه thread ندارد که من بخواهم بررسی‌اش کنم... )
    خیلی ساده بخوام توضیح بدم !
    هر برنامه ای که شما در سیستم عامل اجرا میکنید درون یک پردازه قرار میگیره که داخل همین پردازه یک نخ اصلی وجود داره که وظیفه کنترل برنامه و المانهای گرافیکی و خیلی چیزهای دیگه را داره!
    و دقیقا تابع main برنامه محل نخ اصلی برنامه هم هست.
    ۱- آیا این چند نخ کاری، باعث افت قدرت کار در نخ اصلی نمی‌شود؟ (یعنی ما تنها از نخ دوم انتظار داریم چند تا جعبه متنی را به روز رسانی کند... ولی یک باره نمی‌آید ۳۰-۴۰ درصد از قدرت نخ اصلی را بگیرد؟)
    نه ربطی نداره! بحث تامین منابع سخت افزاری نخ ها به عهده سیستم عامل و پردازشگر هست بنابراین استفاده از نخ ها نمیتونه بر روی تامین منابع سخت افزاری نخ های دیگر برنامه ویا نخ اصلی برنامه خللی وارد کنه!
    البته در صورتی که در استفاده از نخ ها دچار زیاده روی شوید قطعا در کارایی برنامه تاثیر خواهد گذاشت

    ۲- آیا این نقص جاوا (کتابخانه‌های موجود جاوا swing) نیست که این کارها را خودشان به عهده نمی‌گیرند و باید برایشان برنامه اضافه نوشت؟ البته من در ترازی نیستم که اصلا بخواهم در این باره اظهار نگر کنم... ولی به نگرم اینها باید تنها با یک فعال یا غیر فعال کردن یک متغیر ساده (یک آرگومان) خود به خود انجام می‌شد... باید در نرم‌افزارهای ادیتور (netbeans) یک همچنین چیزی به صورت بصری گنجانده می‌شد... که آیا دوست داری این خودکار مقادیرش تغییر کند؟ در چه بازه‌ای دوست داری؟ در هنگام انجام کلیه توابع؟ یا در هنگام انجام چند تابع خاص؟ و ... احتمالا نوشتنش سخت هم نیست! نمی‌دانم چرا همچنین چیزی را انجام نداده‌اند...
    خیر دوست عزیز! ربطی به جاوا نداره تمامی محیط های برنامه نویسی همینطور هستند یعنی نرم افزاری که در این زبانها تولید میشه یک نخ اصلی دارند در یک پردازه اصلی
    اینکه شما می فرمایید که بایک فعال و غیر فعال کردن متغیر باید انجام میشد؟! تا حالا به غیر از جاوا تو کدوم محیط برنامه نویسی کردید که چنین استنباطی کردید؟ به هرحال حتی محیطهای برنامه نویسی قدیمی هم که single thread apartement بودند هم باز یک نخ اصلی داشتند فقط مشکلی که داشتند این بود که از چند نخی پشتیبانی نمیکردند.
    بنابراین وقتی بخواهید با المانهای گرافیکی فرمهایی که دارید در ارتباط باشید باید در همان نخ صاحب المان همون نخ اصلی برنامه در تعامل باشید مثلا برای کاری که شما می خواهید انجام بدید حتما هم لازم نیست که از نخ های دیگه ای استفاده کنید می تونید در همون نخ اصلی هم عملیات هایی که لازم دارید انجام بدید یعنی امکان اضافه کردن عملیاتها ویا فرآیندهایی در زمان اجرا به نخ اصلی وجود دارد. ولی خیلی روش بهینه ای نخواهد بود.
    ودر آخر هم همانطور که خودتون گفتید بهتره کمی درباره نخ ها مطالعه داشته باشید و سعی کنید مثالهای مختلف راهم انجام بدید فقط توجه داشته باشید که به علت پیچیدگی هایی که در برنامه نویسی چند نخی و همزمانی و موازی سازی وجود داره سعی کنید که کم کم به این مباحث و تکنیک ها آشنایی پیدا کنید

  6. #6

    نقل قول: به‌روزرسانی TextBox , ProgressBar

    نقل قول نوشته شده توسط farhad_shiri_ex مشاهده تاپیک
    خیلی ساده بخوام توضیح بدم !
    هر برنامه ای که شما در سیستم عامل اجرا میکنید درون یک پردازه قرار میگیره که داخل همین پردازه یک نخ اصلی وجود داره که وظیفه کنترل برنامه و المانهای گرافیکی و خیلی چیزهای دیگه را داره!
    و دقیقا تابع main برنامه محل نخ اصلی برنامه هم هست.

    نه ربطی نداره! بحث تامین منابع سخت افزاری نخ ها به عهده سیستم عامل و پردازشگر هست بنابراین استفاده از نخ ها نمیتونه بر روی تامین منابع سخت افزاری نخ های دیگر برنامه ویا نخ اصلی برنامه خللی وارد کنه!
    البته در صورتی که در استفاده از نخ ها دچار زیاده روی شوید قطعا در کارایی برنامه تاثیر خواهد گذاشت


    خیر دوست عزیز! ربطی به جاوا نداره تمامی محیط های برنامه نویسی همینطور هستند یعنی نرم افزاری که در این زبانها تولید میشه یک نخ اصلی دارند در یک پردازه اصلی
    اینکه شما می فرمایید که بایک فعال و غیر فعال کردن متغیر باید انجام میشد؟! تا حالا به غیر از جاوا تو کدوم محیط برنامه نویسی کردید که چنین استنباطی کردید؟ به هرحال حتی محیطهای برنامه نویسی قدیمی هم که single thread apartement بودند هم باز یک نخ اصلی داشتند فقط مشکلی که داشتند این بود که از چند نخی پشتیبانی نمیکردند.
    بنابراین وقتی بخواهید با المانهای گرافیکی فرمهایی که دارید در ارتباط باشید باید در همان نخ صاحب المان همون نخ اصلی برنامه در تعامل باشید مثلا برای کاری که شما می خواهید انجام بدید حتما هم لازم نیست که از نخ های دیگه ای استفاده کنید می تونید در همون نخ اصلی هم عملیات هایی که لازم دارید انجام بدید یعنی امکان اضافه کردن عملیاتها ویا فرآیندهایی در زمان اجرا به نخ اصلی وجود دارد. ولی خیلی روش بهینه ای نخواهد بود.
    ودر آخر هم همانطور که خودتون گفتید بهتره کمی درباره نخ ها مطالعه داشته باشید و سعی کنید مثالهای مختلف راهم انجام بدید فقط توجه داشته باشید که به علت پیچیدگی هایی که در برنامه نویسی چند نخی و همزمانی و موازی سازی وجود داره سعی کنید که کم کم به این مباحث و تکنیک ها آشنایی پیدا کنید
    باز هم متشکرم.
    منظورم از نقص کتابخانه‌ها چیز دیگری بود... منظورم این بود که برای اینکه سهولت (حالت خودکار) بیشتری داشته باشیم باید همین‌ها (ایجاد و به‌کارگیری نخ مربوط به به‌روزرسانی مدام textBox ها) به صورت خودکار توسط نرم‌افزارهای برنامه‌نویسی (netbeans) انجام بشود. یعنی من همین‌که در حالت Design از آن بغل (از Pallete) یک عدد Text Area می‌کشم می‌اندازم داخل پنجره‌ام، در اینجا باید خود به خود این موارد توسط netbeans پیشبینی بشود و داخل آن کادر Properties گزینه‌ای وجود داشته باشد (از من سوال شود که) آیا دوست دارم این را به صورت خودکار به‌روزرسانی کنم؟ یا نه؟ اگر دوست دارم در چه بازه‌ای دوست دارم (در زمان اجرای کدام توابع یا زدن کدام دکمه‌ها دوست دارم) همزمان روزرسانی این هم انجام شود؟ اینجا properties را که تغییر می‌دادم خود به خود خودش می‌آمد یک نخ ایجاد می‌کرد (یا می‌گشت نخ پیشین را پیدا می‌کرد) و آن را تنظیم می‌کرد که خود به خود با یک تابع یا یک متغیر یا با یک event به‌روزرسانی شود...
    منظورم این بود. البته از سوی دیگر... این حتما به ذهن همه رسیده... و اگر شدنی بود حتما می‌شده...

    ان‌شاءالله یک مقدار در مورد نخ‌ها مطالعه کنم باز هم مزاحتمان می‌شوم.
    یا علی.

  7. #7

    نقل قول: به‌روزرسانی TextBox , ProgressBar

    باز هم متشکرم.
    خواهش میکنم دوست گرامی

    منظورم از نقص کتابخانه‌ها چیز دیگری بود... منظورم این بود که برای اینکه سهولت (حالت خودکار) بیشتری داشته باشیم باید همین‌ها (ایجاد و به‌کارگیری نخ مربوط به به‌روزرسانی مدام textBox ها) به صورت خودکار توسط نرم‌افزارهای برنامه‌نویسی (netbeans) انجام بشود
    دوست گرامی netbeans فقط یک محیط توسعه هست ارتباطی به نحوه پیاده سازی کدها نداره و نخواهد داشت.

    یعنی من همین‌که در حالت Design از آن بغل (از Pallete) یک عدد Text Area می‌کشم می‌اندازم داخل پنجره‌ام، در اینجا باید خود به خود این موارد توسط netbeans پیشبینی بشود و داخل آن کادر Properties گزینه‌ای وجود داشته باشد (از من سوال شود که) آیا دوست دارم این را به صورت خودکار به‌روزرسانی کنم؟ یا نه؟ اگر دوست دارم در چه بازه‌ای دوست دارم (در زمان اجرای کدام توابع یا زدن کدام دکمه‌ها دوست دارم) همزمان روزرسانی این هم انجام شود؟ اینجا properties را که تغییر می‌دادم خود به خود خودش می‌آمد یک نخ ایجاد می‌کرد (یا می‌گشت نخ پیشین را پیدا می‌کرد) و آن را تنظیم می‌کرد که خود به خود با یک تابع یا یک متغیر یا با یک event به‌روزرسانی شود...
    دوست گرامی به علت اینکه اگر بخوام توضیح بدم که چرا چنین چیزی تعبیه نشده باید خیلی بحث را فنی توضیح داد و البته توضیح این موضوع هم قطعا در چند سطر شدنی نیست به همین علت پیشنهاد میکنم برای اینکه بهتره متوجه برخی مسائل حوزه طراحی رابط گرافیکی شی گرا Object Oriented Design به اختصار OOD شوید حتما منابع مختلف زبانهای برنامه نویسی مختلف را مطالعه کنید خیلی از این مشکلات براتون رفع خواهد شد.

تاپیک های مشابه

  1. آموزش نمایش میزان کپی شدن فایل با ProgressBar در دلفی
    نوشته شده توسط راحله سعادتی در بخش برنامه نویسی در Delphi
    پاسخ: 1
    آخرین پست: چهارشنبه 09 اسفند 1402, 21:13 عصر
  2. چگونگی افزودن مقدار ProgressBar توسط دومین ProgressBar
    نوشته شده توسط nurani در بخش C#‎‎
    پاسخ: 2
    آخرین پست: شنبه 18 اردیبهشت 1395, 19:47 عصر
  3. آموزش: آموزش ساده وکاربردی استفاده از progressBar
    نوشته شده توسط svhasvha در بخش C#‎‎
    پاسخ: 8
    آخرین پست: چهارشنبه 22 خرداد 1392, 12:52 عصر
  4. آموزش: آموزش تغییر رنگ backcolor,forcecolor کنترل progressbar
    نوشته شده توسط alexmcse در بخش C#‎‎
    پاسخ: 2
    آخرین پست: چهارشنبه 29 شهریور 1391, 12:57 عصر
  5. آموزش نمایش عملکرد یک کار در progressbar
    نوشته شده توسط joker_pok در بخش برنامه نویسی در 6 VB
    پاسخ: 2
    آخرین پست: پنج شنبه 14 بهمن 1389, 19:27 عصر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •