У меня есть два домена приложений, один из которых создает дочерний домен. В дочернем домене есть объект 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
в дочерний домен и выдает исключение о том, что он не может быть сериализован.
Что я действительно хочу, так это чтобы событие передавалось по доменам. Любые умные предложения относительно того, как?