Hello
Is it possible to call the Control.Dispatcher.Invoke in IronRuby? I
have
been digging around and trying various approaches for quite a while and
can’t quite seem to get it to work. The most simple example I below
where I
do not even access the parameter fails… any ideas would be greatly
appreciated.
class MainWindow < Window
def updateStatus(status)
puts ‘hi’
end
def initialize
self.Dispatcher.Invoke(updateStatus, [“jo”])
end
end
Thanks for your time and ideas,
Patrick
Yes it is possible but you need to wrap it in a Delegate like Action for
it
to work
A ruby method is not a CLR delegate at all.
So you can do something like this
def update_status(status)
puts status
end
def initialize
meth = proc { |st| update_status(st) }
self.dispatcher.invoke meth, %w(jo)
end
Met vriendelijke groeten - Best regards - Salutations
Ivan Porto C.
Blog: http://flanders.co.nz
Google Wave: [email protected]
Twitter: http://twitter.com/casualjim
Author of IronRuby in Action (http://manning.com/carrero)
sorry
def initialize
meth = proc { |st| update_status(st) }
self.dispatcher.invoke(System::Action.new(&meth), %w(jo))
end
Met vriendelijke groeten - Best regards - Salutations
Ivan Porto C.
Blog: http://flanders.co.nz
Google Wave: [email protected]
Twitter: http://twitter.com/casualjim
Author of IronRuby in Action (http://manning.com/carrero)
Hi
Sorry, missed this response, it looks closer, I have to poke around
for a
bit, I am getting a missing method exception on Action.new.
Thanks,
Patrick
Hi
Thanks for your help, it still seems to be a bit off, I get this
message
after I cut and pasted your code in. Still looking into it but not
finding
much…
./MainWindow.rb:56: can’t convert Proc into System::Delegate (TypeError)
Thanks,
Patrick
This works for me:
require ‘PresentationFramework’
require ‘PresentationCore’
class MainWindow < System::Windows::Window
def update_status(status)
puts status
end
def initialize
meth = proc { |status| update_status status }
dispatcher.invoke System::Action.of(String).new(&meth), “jo”
end
end
System::Windows::Application.new.run MainWindow.new
Met vriendelijke groeten - Best regards - Salutations
Ivan Porto C.
Blog: http://flanders.co.nz
Google Wave: [email protected]
Twitter: http://twitter.com/casualjim
Author of IronRuby in Action (http://manning.com/carrero)
Ivan
Thank you so much, you have been a great help, what slowed me down is
that your current sample which works is actually a bit different than
the
previous two.
Patrick