[Mono-list] [MonoDevelop] ANNOUNCE: Mono.Addins 0.1
Matthijs ter Woord
matthijsterwoord at gmail.com
Wed Mar 28 09:26:01 EDT 2007
From this message i understand that your mini-framework just loads the complete application inside one appdomain (the second one)?
If so, it's technically just restarting the application then when taking down that appdomain.
Andrés G. Aragoneses [ knocte ] wrote:
> Lluis Sanchez escribió:
>>>> However, as Matthijs pointed out in his reply, app-domains don't play
>>>> well with GUI toolkits, and GTK# is not an exception.
>>> Mmmmm, why? I didn't have any information about this. Could you
>>> ellaborate? It sounds very strange to me because I already have a
>>> mini-framework which supports this and uses WinForms.
>> I can't tell for WinForms, but it won't work with gtk#. One problem is
>> that the GType types that gtk# creates for every managed subclass of a
>> widget are per-process, not per-assembly, and you'll get errors when
>> trying to use the same classes from different app-domains. Another
>> problem is that gtk# does not support having two managed objects to
>> represent the same GTK object. What would happen if you override the
>> OnKeyPress event on both objects? which one would be called? And even if
>> you application had an strict control on the objects and avoided
>> creating two managed objects for the same GTK object, the application
>> has no control on the main GTK thread, so for example the GTK thread
>> might receive an event for an object from domain A, while running in
>> domain B.
>
> Very interesting Lluis. However, I think that these problems shouldn't
> arise for this feature because it wouldn't imply using objects across
> appDomains. As I understand it (and as I have coded my mini-framework),
> the only usage of AppDomain boundaries crossing would be at the
> application launch, where the launcher would "launch" the core of the
> addin manager (and subsequently the addins...) in a second appdomain
> configured with ShadowCopy==true. Since that launch, no other
> inter-AppDomain calls would be launched. The main program flow would
> live and die in the second appdomain as if it were the main appdomain.
>
>
>> GTK# can probably be improved to support multiple domains (even with
>> some limitations), but it would require an important redesign of the
>> internals (e.g. reference tracking), and IMO the effort needed is not
>> worth it.
>
> Well, perhaps in a far future we could have a completeley managed GTK#
> library. That would solve the problem too I guess :)
>
> Regards,
>
> Andrés [ knocte ]
>
More information about the Mono-list
mailing list