سلام من اداخل یک کلاس یک متد Task ساختم میخوام از داخل اون تسک یکسری ارقام رو بر روی یک لیبل رویMain Window یا همون فرم نمایش بدم اما ارور زیر رو میده
در ضمن کد زیر رو هم به شیئ لیبلم اضافه کردم و خارج از task کار میکنه
<Label x:Name="lbl_SaveA" x:FieldModifier="public"
سلام
UI در WPF در Main Thread برنامه قابل تغییر هستش، در واقع تمام فریم ورک ها یک Event Loop دارند و برای safe بودن این قسمت از تداخل دسترسی به منابع (کنترلها) فقط و فقط در Main Thread قابل تغییر میباشند.
خب حالا راه حل چیست ؟
راه حل اینه که شما اون Task رو به Main Thread متصل کنی و عملیاتی که میخوای رو انجام بدی.
با استفاده از قطعه کد زیر عملیات مربوط به تغییر محتوای Label رو انجام بده.
فقط یادت باشه که فقط و فقط قطعهای که در Controlها تغییر ایجاد میکنه رو داخل این بنویسی نه اینکه کل Task رو داخل این قطعه بنویسی، اگه اینکار رو بکنی عملا Task جداگانهای نداری!
Dispatcher.Invoke(() => { // Change your label content });
هیچ کاربری تا کنون از این پست تشکر نکرده است
با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)