سلام دوستان
من اطلاعاتی که از سریال پورت می خونم رو در يک متغيير String می ريزم.مقدار اين متغيير رو با MessageBax می تونم نشون بدم ولی اگه بخوام با يک TextBox نشون بدم پیغام خطای زير در حین اجرا ظاهر میشه
سلام دوستان
من اطلاعاتی که از سریال پورت می خونم رو در يک متغيير String می ريزم.مقدار اين متغيير رو با MessageBax می تونم نشون بدم ولی اگه بخوام با يک TextBox نشون بدم پیغام خطای زير در حین اجرا ظاهر میشه
این مشکل ربطی به سریال پورت و ... نداره. این استثنا به این دلیل رخ میده که شما توی نخی جدای از نخ اصلی برنامه قصد تغییر شئ ای رو دارید که توی نخ اصلی ساخته شده. (چی گفتم!!)
روشهای زیادی برای برطرف کردن این مشکل مطرح شده اگر توی همین سایت بگردید مطالب زیادی رو پیدا میکنید.
ساده ترین روش اینه که قبل از ساخت نخ جدید دستور زیر رو بنویسید
Control.CheckForIllegalCrossThreadCalls = false;
اين كد جلوي بررسي علتي كه همون خطا را به شما داده ميگيره
شما در C# اجازه نداري به اين راحتي ها از يك ترد يا نخ به متغيرهاي يك ترد ديگه دسترسي داشته باشي
اين راه كه دوستمون گفته ساده است اما خوب نيست چون بنوعي پاك كردن صورت مسئله ميشه بهتره از يك روش Threadsafe اين كار را انجام بدي هم اينجا و هم سايت Codeproject ميتوني كلي نمونه پيدا كني
https://barnamenevis.org/showthread.php?t=183596
https://barnamenevis.org/showthread.php?t=145047
https://barnamenevis.org/showthread.php?t=149308
اگه بگردید موارد دیگه ای هم پیدا میشه.