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