1

我目前正在使用 wxRuby 和 RubyMSN 来学习编写桌面程序。我知道这是一项艰巨的任务,而不仅仅是制作记事本等,但我需要比记事本更大的任务。

我现在确实设法让他们自己使用它们,但我不能让他们一起工作。问题是循环。

RubyMSN 希望有一个无限循环

while true
  sleep 1
end

或使用 GUI 的 mainloop 或其他东西

我目前将此代码作为循环

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

我的窗口正在工作,而 main_loop 正在做一些事情。但我无法登录,就像我没有任何循环(来自教程),我只有一条调试线。但是一旦我关闭窗口并让无限循环完成它的工作,它就像一个魅力。

有人?

4

1 回答 1

2

为我工作。试试这个:minimal从 wxruby 发行版中复制样本,并进行修改minimal.rb,以便在 wx 主循环之前启动 msn 线程:

require 'msn/msn'

conn = MSNConnection.new("rubybot@channelwood.org", "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

当然,您需要对msn目录中的minimal目录进行符号链接以使 require 语句正常工作。

你不需要while true {sleep 1}循环;这只是为了防止程序退出,以便您的 msn 线程可以继续运行。wx 主循环完成同样的目的。

于 2009-12-05T17:28:54.797 回答