Android-дубликат авторизации провайдера

У меня были пользователи, жаловавшиеся на " Я создал простое консольное приложение, единственная цель которого - создать новый AppDomain, в который я загружаю очень простую сборку и вызываю один из ее методов. Этот метод вызывает исключение StackOverflowException. Это приводит к тому, что мое консольное приложение бесцеремонно завершается.

Мое желаемое поведение состоит в том, чтобы «дочерний» домен приложения аварийно завершал работу и сгорал при таком исключении, но не затрагивал мое консольное приложение, работающее в «родительском» домене приложений.

Возможно ли это?

ОБНОВЛЕНИЕ: вот код. Ни один из обработчиков исключений не задействован.

    class Program
    {
        static void Main(string[] args)
        {
            AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException;

            // create app domain
            var domain = AppDomain.CreateDomain("MyDomain");

            // create a component
            var component = (MyComponent)domain.CreateInstanceAndUnwrap(
                "AppDomainMonitor.Component", 
                typeof(MyComponent).FullName);

            // create a thread from a method on this component
            var thread = new Thread(component.CauseStackOverflow);

            // start the thread
            thread.Start();

            Console.ReadKey();
        }

        static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
        {
            // never hit
        }
    }

    public class MyComponent : MarshalByRefObject
    {
        public void CauseStackOverflow()
        {
            try
            {
                Infinite();
            }
            catch (Exception ex)
            {
                // never hit
            }
        }


        void Infinite()
        {
            Infinite();
        }
    }
11
задан Mike Chamberlain 22 February 2011 в 23:49
поделиться