PDA

View Full Version : سوال: Refresh لحظه ای لیبل



masoud.a
یک شنبه 26 شهریور 1391, 12:53 عصر
با سلام
یه برنامه ای نوشتم که با پورت سریال بصورت متوالی داده میگیره. حالا میخوام اون داده رو در یک لیبل نشون بدم.از اونجا که داده های ورودی پشت هم عوض میشن چطوری این Refresh رو در لیبل اعمال کنم؟ ینی مقداری که نشون میده با آمدن داده جدید عوض شه.
ممنون میشم کمکم کنید چطور این کار رو انجام بدم

SharpSabre
یک شنبه 26 شهریور 1391, 13:22 عصر
با اضافه کردن یک Timer از منوی Tool یا استفاده از Events اون ورودی مثل StateChanged یا TextChanged و ..

masoud.a
یک شنبه 26 شهریور 1391, 14:55 عصر
ایونت کنترل لیبل؟چجوری این کارو کنم؟

SharpSabre
یک شنبه 26 شهریور 1391, 15:03 عصر
ایونت کنترل لیبل؟چجوری این کارو کنم؟
اطلاعات رو کجا می ریزی ؟ Events همون رو روی lable1.text تنظیم کن که بروز بشه .

vaheeed
یک شنبه 26 شهریور 1391, 16:13 عصر
با استفاده از نخ ها(Thread) هم میشه خیلی هم خوب در میاد ، عمل خوندن از پورت سریال رو داخل یه تابع مینویسی و میگی نخ این تابع رو مدام بخونه و اگه خواستی زمانی باشه یعنی مثلا هر 2 ثانیه بخونه از thread.sleep(2000) استفاده کن اینجوری برنامه سریع تر کار میکنه

masoud.a
یک شنبه 26 شهریور 1391, 16:39 عصر
با استفاده از نخ ها(Thread) هم میشه خیلی هم خوب در میاد ، عمل خوندن از پورت سریال رو داخل یه تابع مینویسی و میگی نخ این تابع رو مدام بخونه و اگه خواستی زمانی باشه یعنی مثلا هر 2 ثانیه بخونه از thread.sleep(2000) استفاده کن اینجوری برنامه سریع تر کار میکنه


منم همین کارو میخواستم بکنم ولی بلد نبودم چطوری پیاده سازیش کنم.میشه یه مثال بزنید؟

vaheeed
یک شنبه 26 شهریور 1391, 17:09 عصر
ببخشید وقت ندارم برنامه بنویسم راحته ها ولی وقتش نیست این برنامه که گذاشتم بصورت مداوم اینترنت رو چک میکنه با نخ نوشتم زیاد خودتو در گیر کد هاش نکن واسه اینترنت و ... فقط کتابخونه threading رو اضافه کن و بعد یه thread تعریف کن و یه delegate و بعد دستورات تابع start_click_1 داره یه نخ رو تعریف و بعد شروعش میکنه فقط یادت باشه تابعی که به نخ میدی باید void باشه حتما و داخلش یک حلقه بینهایت که فقط یه بار اجرا نشه.اگه میخوای تغیری در فرم ایجاد کنی حتما باید داخل یه تابع دیگه بنویسیش و بعد با invoke فراخونیش کنی ، من برای sleep مقدار رو از کاربر گرفتم و در 1000 ضرب کردم چون مقدار sleepبه میلی ثانیه هست . اگه دیدی نفهمیدی بگو یه برنامه ساده مینویسم سره فرصت.
متاسفانه سایت اجازه آپلود نداد تو سایت خودم آپ کردم
http://negin-kh.ir/upload/1.zip

vaheeed
یک شنبه 26 شهریور 1391, 17:41 عصر
برنامه سادش رو هم نوشتم اینو بخونی بهتره
http://negin-kh.ir/upload/threadsade.zip

masoud.a
یک شنبه 26 شهریور 1391, 23:33 عصر
برنامه سادش رو هم نوشتم اینو بخونی بهتره
http://negin-kh.ir/upload/threadsade.zip

خیلی ممنون,عالی بود

masoud.a
چهارشنبه 29 شهریور 1391, 14:36 عصر
برنامه سادش رو هم نوشتم اینو بخونی بهتره
http://negin-kh.ir/upload/threadsade.zip

برنامه چرا بعد از چند دقیقه این error رو میده؟اشکال برنامه چیه؟
Cross_thread Operation not valid:Control Label6 accessed from a thread other than the thread it was created on

vaheeed
چهارشنبه 29 شهریور 1391, 15:04 عصر
چند دقیقه یعنی چند دقیقه؟؟ من 5 دقیقه هست داره واسه خودش میشماره من خسته شدم خروج رو زدم ، راستی از دکمه خروج استفاده میکنی یا از ضربدر فرم واسه بستنش استفاده میکنی؟؟

masoud.a
چهارشنبه 29 شهریور 1391, 16:43 عصر
برنامه من داره داده میگیره اونا رو تو لیبل نشون میده و Refresh میکنه. کمتر از 5 دقیقه طول میکشه تا این مشکل ایجاد بشه.

ali_habibi1384
چهارشنبه 29 شهریور 1391, 17:49 عصر
ترد نيازي نبود. يه ليست باكس بذاريد و يه تايمر. با تايمر اطلاعات رو مدام از پورت بخونيد و اونو توي ليست باكس بريزيد و در تايمرتون هم بگيد آخرين سطر داده در ليست باكس رو توي ليبل نشون بده

masoud.a
پنج شنبه 30 شهریور 1391, 12:21 عصر
ترد نيازي نبود. يه ليست باكس بذاريد و يه تايمر. با تايمر اطلاعات رو مدام از پورت بخونيد و اونو توي ليست باكس بريزيد و در تايمرتون هم بگيد آخرين سطر داده در ليست باكس رو توي ليبل نشون بده

ببخشید تو کدوم حالت بصورت موازی کار میکنه؟ترد یا تایمر؟( یعنی وقتی که مقادیر داده عوض میشه همون زمان توي ليبل نشون داده بشه)

masoud.a
شنبه 01 مهر 1391, 11:40 صبح
چرا وقتی درحین کار مقادیر سخت افزار را کم و زیاد میکنم با یه تاخیر 10،12 ثانیه ای لیبل ها در نرم افزار تغییر میکنند؟از Threat.Sleep هم استفاده نمیکنم

ali_habibi1384
دوشنبه 03 مهر 1391, 07:23 صبح
برنامه چرا بعد از چند دقیقه این error رو میده؟اشکال برنامه چیه؟
Cross_thread Operation not valid:Control Label6 accessed from a thread other than the thread it was created on

چون توي يك ترد نميتوني به اجزاي فرم دسترسي داشته باشه و اونارو عوض كنيد . زيرا كدهاي داخل ترد بصورت مجزا از فرم عمل ميكنه.