سوينغ إنفوكيلاتر تجميد
-
29-10-2019 - |
سؤال
إم استدعاء إنفوكيلاتر ديريكلي من زر على أكتيونبيرفد مع هذا الرمز:
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
int temp = (jComboBox1.getSelectedIndex() + 1);
heavyProccesingFunction();
}
});
}
وهذا لا يزال يجمد واجهة المستخدم الرسومية.لم؟أحصل على نفس النتيجة دون استخدام وظيفة إنفوكيلاتر.
يجب أن أستخدم
Thread queryThread = new Thread() {
public void run() {
في حين أن?
تحرير:
شكرا ، يجب استخدام موضوع جديد.
المحلول
invokeLater
لا يزال ينتهي تشغيل التعليمات البرمجية على موضوع المرسل-في وقت لاحق فقط.الهدف من invokeLater
هو السماح معلومات أساسية المواضيع لنشر العمل على موضوع مرسل الحدث.
يبدو أنه يجب عليك بالفعل إنشاء مؤشر ترابط آخر - أو استخدام تجمع مؤشر ترابط لنفس النوع من التأثير ، أو SwingWorker
على سبيل المثال.مهما فعلت ، تحتاج إلى تجنب تشغيل طريقة بطيئة على موضوع المرسل الحدث.
لا تنتمي إلى StackOverflow