Bükümle ilgili anladığım kadarıyla, reaktör ipliklerinde hiçbir şey çalışmaz. Tüm engelleme aktiviteleri, diğer iş parçacıklarına devredilmeli ve geri çağrılar, tamamlandığında reaktör iş parçacığına geri gönderilmelidir.twisted + gtk: GUI şeylerini iş parçacığında mı, yoksa reaktör dizisinde mi çalıştırmalıyım?
Bu, aynı zamanda bazı şeyler için de geçerli midir? Örneğin, bağlantı başarısız olursa "bağlantı başarısız" mesajını görüntülemek istiyorum. Yapmak mı:
def connectionFailed(self, reason):
dlg = gtk.MessageDialog(type=gtk.MESSAGE_ERROR,
buttons=gtk.BUTTONS_CLOSE,
message_format="Could not connect to server:\n%s" % (
reason.getErrorMessage()))
dlg.run()
ya:
def connectionFailed(self, reason):
dlg = gtk.MessageDialog(type=gtk.MESSAGE_ERROR,
buttons=gtk.BUTTONS_CLOSE,
message_format="Could not connect to server:\n%s" % (
reason.getErrorMessage()))
reactor.callInThread(dlg.run)
ya:
def connectionFailed(self, reason):
def bloogedy():
dlg = gtk.MessageDialog(type=gtk.MESSAGE_ERROR,
buttons=gtk.BUTTONS_CLOSE,
message_format="Could not connect to server:\n%s" % (
reason.getErrorMessage()))
dlg.run()
reactor.callInThread(bloogedy)
?
DÜZENLEME: Ooh tamam, ikinci iki gerçekten berbat. Yani sanırım cevap ilk. O zaman sorum şu: neden? Bu reaktör iplik engellenir gibi görünüyor.
ah parçasında Gtk + 'ı başlatan kodu içerecek şekilde düzenledim. 'Run() 'ile bir ilgisi olduğunu bir mırıltı vardı. ertelenen kesinlikle gitmek için yoldur. – Claudiu