Как передать событие между доменами приложений?

У меня есть два домена приложений, один из которых создает дочерний домен. В дочернем домене есть объект MarshalByRef , связь с которым осуществляется с помощью .NET Remoting. Объект, работающий в родительском домене, вызывает оболочку для удаленного объекта как часть функции приложения:

public class ScanningTask : Task
{
    private class Loader : MarshalByRef
    {
        public void Load(IEnumerable<string> paths)
        {
            ...
        }

        public event EventHandler<LoadEventArgs> OnLoad;
    }

    public void RunTask()
    {
        var domain = AppDomain.CreateDomain("LoadDomain");

        var loader = (Loader)domain.CreateInstanceFromAndUnwrap(
            typeof(Loader).Assembly.Location,
            typeof(Loader).FullName);

        loader.Load(...);

        AppDomain.Unload(domain);
    }
}

Большая часть кода удалена для краткости.

Этот объект Loader предоставляет OnLoad ] событие, которое я хотел бы записать в родительском домене. Если я просто добавлю делегат обработчика событий, он попытается сериализовать ScanningTask в дочерний домен и выдает исключение о том, что он не может быть сериализован.

Что я действительно хочу, так это чтобы событие передавалось по доменам. Любые умные предложения относительно того, как?

5
задан Paul Turner 28 April 2011 в 11:00
поделиться