مرجع تخصصی برنامه نویسان

انجمن تخصصی برنامه نویسان فارسی زبان

کاربر سایت

pilot1900

عضویت از 1393/05/24

اتصال کلاس به mainwindow

  • جمعه 4 آبان 1397
  • 17:26
تشکر میکنم

سلام من اداخل یک کلاس یک متد Task ساختم میخوام از داخل اون تسک یکسری ارقام رو بر روی یک لیبل رویMain Window یا همون فرم نمایش بدم اما ارور زیر رو میده 
در ضمن کد زیر رو هم به شیئ لیبلم اضافه کردم و خارج از task کار میکنه

 <Label x:Name="lbl_SaveA" x:FieldModifier="public"

پاسخ های این پرسش

تعداد پاسخ ها : 1 پاسخ
کاربر سایت

salman_b

عضویت از 1396/02/18

  • شنبه 5 آبان 1397
  • 08:07

سلام

UI در WPF در Main Thread برنامه قابل تغییر هستش، در واقع تمام فریم ورک ها یک Event Loop دارند و برای safe بودن این قسمت از تداخل دسترسی به منابع (کنترل‌ها) فقط و فقط در Main Thread قابل تغییر می‌باشند.

خب حالا راه حل چیست ؟

راه حل اینه که شما اون Task رو به Main Thread متصل کنی و عملیاتی که می‌خوای رو انجام بدی.

با استفاده از قطعه کد زیر عملیات مربوط به تغییر محتوای Label رو انجام بده.

فقط یادت باشه که فقط و فقط قطعه‌ای که در Control‌ها تغییر ایجاد می‌کنه رو داخل این بنویسی نه اینکه کل Task رو داخل این قطعه بنویسی، اگه اینکار رو بکنی عملا Task جداگانه‌ای نداری!

            Dispatcher.Invoke(() =>
            {
                // Change your label content
            });

کاربرانی که از این پست تشکر کرده اند

هیچ کاربری تا کنون از این پست تشکر نکرده است

اگر نیاز به یک مشاور در زمینه طراحی سایت ، برنامه نویسی و بازاریابی الکترونیکی دارید

با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)