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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> корректное завершение приложения 
:(
    Опции темы
blackbanny
Дата 17.6.2013, 19:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Доброго времени суток!
Я создаю dll своего проекта на C#
Эту dll добавляю в зависимости другого приложения и запускаю свое приложение(dll), но после закрытия dll, закрывается и приложение которое ее использует
В моем приложении есть класс, который создает форму: 
Код

Application.Run(new Form1());

в классе Form1 есть кнопка "Cancel", при нажатииa на которую я хочу закрыть свое приложение(dll), в Click на Cancel я пишу: 
Код

Application.Exit() или Environment.Exit(0);

Без разницы, как закрывать приложение, вызывающее приложение закрывается вместе с моим...
Подскажите, как закрыть только мое приложение? 
Код

this.Close() 
у Form1 не предлагать, тоже не работает...
Как узнать название процесса моей программы, чтобы я сделал Kill()?
PM MAIL   Вверх
Fobos
Дата 17.6.2013, 20:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Приложение это все же процесс. А библиотеки уже загружаются в процесс. Сл-но не вы управляете приложением и не вы должны его закрывать, ваша библиотека всего лишь должна предлагать какую-то функциональность для ее клиентов. Если вы используете какие-то ресурсы которые надо освободить, можете реализовать паттерн IDisposable в вашем Form1. Еще раз, вас вызвали - пусть они и думают, вы должны лишь выполнять ту работу для которой вы написали библиотеку, остально дела корабельной артиллерии.
PM MAIL ICQ   Вверх
blackbanny
Дата 18.6.2013, 06:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Fobos, спасибо за ответ)
сейчас опишу подробнее и ситуацию, когда я не пишу в своем приложении 
Код

Application.Exit()

в моем приложении(dll) есть класс Program, который создает Form1 в методе 
Код

public void Main
:
Код

Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());

в стороннем приложении после подключения dll, я вызываю свое приложение таким образом:
Код

FlexiCapture_Blank_Page_Removal_Dialog.Program BlankPageRemoval = new FlexiCapture_Blank_Page_Removal_Dialog.Program();
BlankPageRemoval.Main();

первый раз в стороннем приложении моя программа вызывается корректно, а вот после второго вызова выпадает exception:
exception
если я комментирую строку в Program: 
Код

Application.SetCompatibleTextRenderingDefault(false);

или ставлю true 
Код

Application.SetCompatibleTextRenderingDefault(true);

то происходит тоже самое... :(
PM MAIL   Вверх
Fynivx
Дата 19.6.2013, 04:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Если я правильно понял, Вы в библиотеке пытаетесь сделать полноценное WinForms-приложение.
Есть в .NET способы изоляции, но сейчас у Вас ошибка не в их незнании, а в неудачной архитектуре.

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

Этот ответ добавлен с нового Винграда - http://vingrad.com
PM MAIL   Вверх
blackbanny
Дата 19.6.2013, 05:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



проблему решил сделав singleton, т.е. в своем приложении класс с формой имеет instance конструктор и статический экземпляр класса, при каждом закрытии формы статический экземпляр класса уничтожал...

Это сообщение отредактировал(а) blackbanny - 19.6.2013, 05:24
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

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


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

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


 




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


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

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