Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Загрузка в AppDomain, и всетаки снова в Current грузим.... 
V
    Опции темы
War_Chief
Дата 20.10.2008, 14:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 39
Регистрация: 10.7.2007
Где: Украина,Киев

Репутация: нет
Всего: нет



Доброго всемдня.

Возникла такая проблема. Мое приложения должно загружать определенные сборки, работать с ними и выгружать из памяти.

Почитал про AppDomain, создал свой домен и гружу в него, но почемуто все сборки грузятся и в CurrentDomain, я видать гдето что то пропустил((((
2-й день уже бьюсь, скажите что и где не так...
Код


using System;
using System.Threading;
using System.Reflection;
using System.Runtime.Remoting;
using System.IO;
using System.Runtime.InteropServices;
using System.Security.Permissions;
using System.Security.Policy;

namespace AppDom
{

    class Class1
    {
        

        static void Main(string[] args)
        {
            
            try
            {
                AppDomainSetup ApDSet = new AppDomainSetup();
                ApDSet.LoaderOptimization=LoaderOptimization.SingleDomain;
                AppDomain myDom=AppDomain.CreateDomain("RDAMOD",null,ApDSet);

                Class2 r=(Class2)myDom.CreateInstanceAndUnwrap(Assembly.GetExecutingAssembly().FullName,"AppDom.Class2",false);

                r.Lolka();
                Assembly[] asms=myDom.GetAssemblies();
                Console.WriteLine("_____________________________________"+myDom.FriendlyName);
                foreach(Assembly it in asms)
                    Console.WriteLine(it.GetName().Name);
                //---------------
                AppDomain.Unload(myDom);
                //---------------
                Assembly[] asms2=AppDomain.CurrentDomain.GetAssemblies();
                Console.WriteLine("_____________________________________"+AppDomain.CurrentDomain.FriendlyName);
                foreach(Assembly it in asms2)
                    Console.WriteLine(it.GetName().Name);
                //File.Delete("SLFD.dll");
                Console.ReadLine();
            }
            catch(Exception ex)
            {
                Console.WriteLine("Was exeption: ");
                Console.WriteLine(ex.Message);
                Console.ReadLine();
            }
        }

    }
    [Serializable]
    public class Class2:MarshalByRefObject
    {
        
        public Class2()
        {
            Console.WriteLine("Hello");
        }
        public void Lolka()
        {
            Console.WriteLine("Lolka");
            Object asm=AppDomain.CurrentDomain.CreateInstanceAndUnwrap("SLFD","SLFD.Class1");
            Type tp=asm.GetType();
            tp.InvokeMember("WriteMe", BindingFlags.DeclaredOnly | BindingFlags.Public |     BindingFlags.NonPublic|BindingFlags.Instance | BindingFlags.InvokeMethod, null, asm, new object[] {}
);
            Assembly[] asms2=AppDomain.CurrentDomain.GetAssemblies();
            Console.WriteLine("_____________________________________"+AppDomain.CurrentDomain.FriendlyName);
            foreach(Assembly it in asms2)
            Console.WriteLine(it.GetName().Name);
        }


    }
}



В результате получаю:

Цитата


Hello
Lolka
Me is here!!!!
_____________________________________RDAMOD
mscorlib
AppDom
SLFD
RDA
_____________________________________RDAMOD
mscorlib
AppDom
SLFD
RDA
_____________________________________AppDom.exe
mscorlib
AppDom
SLFD //А етого здесь быть не должно
RDA //А етого здесь быть не должно



RDA загружается в программу в модуле SLFD.dll!!

ПЫ. СЫ перечитал все темы по етому вопросу на форуме и ничего(((
PM MAIL ICQ   Вверх
War_Chief
  Дата 22.10.2008, 17:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 39
Регистрация: 10.7.2007
Где: Украина,Киев

Репутация: нет
Всего: нет



Ну неужели никто не знает????? smile 
PM MAIL ICQ   Вверх
Unsane
Дата 22.10.2008, 17:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 103
Регистрация: 8.6.2007

Репутация: 1
Всего: 5



 Модераторы, удалите это(моё) сообщение. 

Это сообщение отредактировал(а) Unsane - 22.10.2008, 22:13
--------------------
Я дурак.. Этим и интересен!
PM MAIL   Вверх
War_Chief
Дата 22.10.2008, 18:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 39
Регистрация: 10.7.2007
Где: Украина,Киев

Репутация: нет
Всего: нет



Unsane, Что значит "не то и не туда"?
В етом разделе и раньше обсуждали домены, причем по такому же вопросу!!!!!
PM MAIL ICQ   Вверх
Unsane
Дата 22.10.2008, 22:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 103
Регистрация: 8.6.2007

Репутация: 1
Всего: 5



Ты мну не так понял.. Я просил удалить МОЁ сообщение, а не тему вообще)
На всякий случай подредактировал..

з.ы. Попробуй убрать MarshalByRefObject, в одной из тем по сходному вопросу именно из за него грузилось не в тот домен(тут вроде).

Это сообщение отредактировал(а) Unsane - 22.10.2008, 22:14
--------------------
Я дурак.. Этим и интересен!
PM MAIL   Вверх
War_Chief
  Дата 23.10.2008, 09:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 39
Регистрация: 10.7.2007
Где: Украина,Киев

Репутация: нет
Всего: нет



Unsane, спасибо, получилось наконец то сделать разделение.
У меня не только с MarshalByRefObject проблемка но и нужно было через DoCallBack делать.
PM MAIL ICQ   Вверх
War_Chief
Дата 23.10.2008, 10:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 39
Регистрация: 10.7.2007
Где: Украина,Киев

Репутация: нет
Всего: нет



Нашол еще один глюк, 
Код

     Assembly[] asms=myDom.GetAssemblies();
                Console.WriteLine("_____________________________________"+myDom.FriendlyName);
                foreach(Assembly it in asms)
                    Console.WriteLine(it.GetName().Name);


Здесь когда вызывается ,
Код

  Assembly[] asms=myDom.GetAssemblies();


то сборки и помещаются в текущий домен.
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0434 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.