2009-12-05 14 views
1

Je joue actuellement avec wxRuby et RubyMSN pour apprendre à programmer des programmes de bureau. Je sais que c'est une tâche difficile au lieu de simplement créer un bloc-notes, etc, mais j'ai besoin d'une plus grande tâche qu'un bloc-notes. Je réussis maintenant à les utiliser par eux-mêmes, mais je ne peux pas les amener à travailler ensemble. Le problème est la boucle.wxruby et rubymsn

RubyMSN veut avoir une boucle sans fin comme

while true 
    sleep 1 
end 

ou en utilisant l'interface graphique de l'mainloop ou quelque chose

J'ai actuellement ce code comme la boucle

TheApp.new.main_loop() 
while true 
    sleep 1 
end 

j'ai ma fenêtre de travail , et le main_loop fait quelque chose. Mais je ne peux pas me connecter, c'est comme si je n'avais pas de boucle (à partir de the tutorial), je n'ai qu'une ligne de débogage. Mais dès que je ferme la fenêtre et que la boucle sans fin fait son travail, ça fonctionne comme un charme.

Quelqu'un?

Répondre

2

J'ai travaillé pour moi. Essayez ceci: copier l'échantillon minimal de la distribution de wxruby et modifier minimal.rb de sorte que vous démarrez votre thread msn juste avant la boucle principale WX:

require 'msn/msn' 

conn = MSNConnection.new("[email protected]", "secretpassword123") 
conn.start 

# Wx::App is the container class for any wxruby app. To start an 
# application, either define a subclass of Wx::App, create an instance, 
# and call its main_loop method, OR, simply call the Wx::App.run class 
# method, as shown here. 
Wx::App.run do 
    self.app_name = 'Minimal' 
    frame = MinimalFrame.new("Minimal wxRuby App") 
    frame.show 
end 

Vous aurez besoin de créer un lien symbolique dans le répertoire msn dans le répertoire minimal à Faites fonctionner la déclaration requise, bien sûr.

Vous n'avez pas besoin de la boucle while true {sleep 1}; C'est juste pour empêcher le programme de sortir afin que votre thread msn puisse continuer à fonctionner. La boucle principale de wx accomplit le même but.

+1

Ne semble pas aller plus loin. Ceci est mon code maintenant: http://pastie.org/729297 Il s'arrête toujours après "-> Envoyé:" VER 1 MSNP9 CVR0 \ r \ n "" – ThoKra

+1

pourrait être un problème de plate-forme. votre code a fonctionné gaiement pour moi (fait la même chose avec et sans wx) sur ma boîte (ruby 1.9.1 sur archlinux) –

+0

Mis à jour à ruby ​​1.9.1 et wxruby19 et maintenant ça marche :) Merci :) – ThoKra