Известный Болтун
Зарегистрирован: 09 July 2005
Сообщения: 549
Примеры кода: 0
|
Опять о выгрузке сборок |
04 July 2008 12:49 |
|
|
|
|
bobikov_aj:
Я через InvokeMember выполняю функцию из этой сборки и запоминаю у себя результат. Подгрузка: // создание домена AppDomain ad2 = AppDomain.CreateDomain(Guid.NewGuid().ToString()); // подгрузка сборки AssemblyName assName = AssemblyName.GetAssemblyName(destFileName); Assembly asm2 = ad2.Load(assName, ad2.Evidence); // выполняем метод Type t2 = asm2.GetExportedTypes()[0]; object o2 = t2.InvokeMember("GetTermsFromText", BindingFlags.InvokeMethod | BindingFlags.Static | BindingFlags.Public, null, null, new object[1] { text }); // результат запоминаем if (o2 != null) resultList = (List)o2; // выгружаем домен AppDomain.Unload(ad2); // удаляем файл подгруженной сборки try { System.IO.File.Delete(destFileName); } catch (Exception ex) { Log.Write("Ошибка удаления файла : " + destFileName + " " + ex.Message); } Может быть результат надо скопировать во вновь созданный List? А таким образом у меня просто запоминается указатель, который и держит сборку в основном домене?
мне кажется эта строка и загружает сборку в основной домен. поставь брейпоинт на нее и проверь загружена ли та сборка до этой строки (ctrl+U) и после нее.
возможно надо юзать AppDomain.DoCallBack()
(1) ты не забудь что эта панель может быть не внизу экрана, а например вертикально слева как у меня
(2) читай System.Windows.Forms.Form.InvokeRequired
Данное сообщение получено с сайта GotDotNet.RU
Последний раз редактировалось 04 July 2008 12:49
|
|