تجنب الأخطاء المتقاطعة: تحديث عناصر واجهة المستخدم بأمان من مؤشرات الترابط غير المعيبة
عند التفاعل مع عناصر واجهة المستخدم من مؤشرات الترابط غير (مثل مؤشرات الترابط التي تم إنشاؤها عن طريق تلقي الأحداث من بيانات المنفذ التسلسلي) ، يجب التعامل مع مشكلات سلامة مؤشرات الترابط لتجنب الأخطاء المتقاطعة.
في رمز C# ، فإن "تشغيل" الخطأ "غير صالح: التحكم في الوصول" TextBox1 "من مؤشر ترابط آخر غير مؤشر الترابط الذي أنشأ التحكم في مربع النص" "لأن مؤشر ترابط واجهة المستخدم يمتلك عنصر تحكم TextBox1 ، والوصول إليه من موضوع آخر سوف يسبب تعارضات ارتباط الخيط.
لحل هذه المشكلة ، يجب استخدام جدولة للسماح لروابط المواضيع المناسبة (عادةً ما يكون مؤشرات ترابط واجهة المستخدم) للوصول إلى عناصر واجهة المستخدم. في هذه الحالة ، يمكن استخدام أساليب التفويض والاستدعاء لضمان الوصول إلى مؤشرات الترابط:
delegate void SetTextCallback(string text);
private void SetText(string text)
{
if (this.textBox1.InvokeRequired)
{
SetTextCallback d = new SetTextCallback(SetText);
this.Invoke(d, new object[] { text });
}
else
{
this.textBox1.Text = text;
}
}
الآن ، في معالج الأحداث SerialPort1_Datareceived:
private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
{
txt = serialPort1.ReadExisting().ToString();
SetText(txt.ToString());
}
باستخدام طريقة setText ، يمكنك تفويض المهام التي تحديث سمة نص TextBox1 إلى مؤشر ترابط واجهة المستخدم ، مما يضمن الوصول الآمن وخالي من الأخطاء إلى عناصر واجهة المستخدم من مؤشرات الترابط غير المعيارية.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3