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 Carrero
Blog: http://flanders.co.nz
Google Wave: [email protected]
Twitter: http://twitter.com/casualjim
Author of IronRuby in Action (http://manning.com/carrero)
On Tue, Nov 24, 2009 at 8:56 PM, Patrick Brown <[email protected]>wrote:
> 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
>
>
>
> On Tue, Nov 24, 2009 at 2:09 PM, Ivan Porto Carrero
> <[email protected]>wrote:
>
>> 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 Carrero
>> Blog: http://flanders.co.nz
>> Google Wave: [email protected]
>> Twitter: http://twitter.com/casualjim
>> Author of IronRuby in Action (http://manning.com/carrero)
>>
>>
>>
>> On Tue, Nov 24, 2009 at 7:44 PM, Patrick Brown <[email protected]
>> > wrote:
>>
>>> 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
>>>
>>> _______________________________________________
>>> Ironruby-core mailing list
>>> [email protected]
>>> http://rubyforge.org/mailman/listinfo/ironruby-core
>>>
>>>
>>
>> _______________________________________________
>> Ironruby-core mailing list
>> [email protected]
>> http://rubyforge.org/mailman/listinfo/ironruby-core
>>
>>
>
> _______________________________________________
> Ironruby-core mailing list
> [email protected]
> http://rubyforge.org/mailman/listinfo/ironruby-core
>
>
_______________________________________________
Ironruby-core mailing list
[email protected]
http://rubyforge.org/mailman/listinfo/ironruby-core