» » » Симон Робинсон - C# для профессионалов. Том II


Авторские права

Симон Робинсон - C# для профессионалов. Том II

Здесь можно скачать бесплатно "Симон Робинсон - C# для профессионалов. Том II" в формате fb2, epub, txt, doc, pdf. Жанр: Программирование, издательство Лори, год 2003. Так же Вы можете читать книгу онлайн без регистрации и SMS на сайте LibFox.Ru (ЛибФокс) или прочесть описание и ознакомиться с отзывами.
Симон Робинсон - C# для профессионалов. Том II
Рейтинг:
Название:
C# для профессионалов. Том II
Издательство:
Лори
Год:
2003
ISBN:
5-85582-187-0
Скачать:

99Пожалуйста дождитесь своей очереди, идёт подготовка вашей ссылки для скачивания...

Скачивание начинается... Если скачивание не началось автоматически, пожалуйста нажмите на эту ссылку.

Вы автор?
Жалоба
Все книги на сайте размещаются его пользователями. Приносим свои глубочайшие извинения, если Ваша книга была опубликована без Вашего на то согласия.
Напишите нам, и мы в срочном порядке примем меры.

Как получить книгу?
Оплатили, но не знаете что делать дальше? Инструкция.

Описание книги "C# для профессионалов. Том II"

Описание и краткое содержание "C# для профессионалов. Том II" читать бесплатно онлайн.



C# для профессионалов

Платформа .NET предлагает новую среду, в которой можно разрабатывать практически любое приложение, действующее под управлением Windows, а язык C# — новый язык программирования, созданный специально для работы с .NET.

В этой книге представлены все основные концепции языка C# и платформы .NET. Полностью описывается синтаксис C#, приводятся примеры построения различных типов приложений с использованием C# — создание приложений и служб Windows, приложений и служб WWW при помощи ASP.NET, а также элементов управления Windows и WWW Рассматриваются общие библиотеки классов .NET, в частности, доступ к данным с помощью ADO.NET и доступ к службе Active Directory с применением классов DirectoryServices.

Для кого предназначена эта книга

Эта книга предназначена для опытных разработчиков, возможно, имеющих опыт программирования на VB, C++ или Java, но не использовавших ранее в своей работе язык C# и платформу .NET. Программистам, применяющим современные технологии, книга даст полное представление о том, как писать программы на C# для платформы .NET.

Основные темы книги

• Все особенности языка C#

• C# и объектно-ориентированное программирование

• Приложения и службы Windows

• Создание web-страниц и web-служб с помощью ASP NET

• Сборки .NET

• Доступ к данным при помощи ADO NET

• Создание распределённых приложений с помощью NET Remoting

• Интеграция с COM, COM+ и службой Active Directory






sc.exe — хорошая утилита для работы со службами. С ней можно сделать значительно больше по сравнению с утилитой net.exe. С помощью sc проверяется реальный статус, конфигурируются, удаляются и добавляются службы. Эта утилита помогает в том случае, когда удаление службы не может производиться обычным образом.

Server Explorer

Управлять службами можно также с помощью Server Explorer из Visual Studio.NET. Если вы не находите Server Explorer в текущей конфигурации, можно сделать его видимым с помощью меню View|Server Explorer. Выбирая службу и открывая контекстное меню, запускают и останавливают службу. Это контекстное меню также используется для добавления в проект класса ServiceController. Если вы желаете управлять специфической службой в приложении, перетащите службу из Server Explorer в конструктор — экземпляр ServiceController добавится в приложение. Свойства этого объекта автоматически задаются для доступа к выбранной службе и создается ссылка на System.ServiceProcess.dll. Можно использовать этот экземпляр для управления службой таким же образом, как мы это делаем в следующем разделе в базовом приложении для управления всеми службами.

Класс ServiceController

Создадим небольшое оконное приложение с помощью класса ServiceController для мониторинга и управления оконными службами.

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

Здесь используется класс System.ServiceProcess.ServiceController, поэтому необходимо иметь ссылку на System.ServiceProcess.dll.

Мы реализуем метод RefreshServiceList(), который вызывается в конструкторе класса ServiceControlForm. Этот метод заполняет окно списка внешними именами всех служб. GetServices() является статическим методом класса ServiceController, и он возвращает массив ServiceController, представляющий все службы Windows. Класс ServiceController также имеет статический метод GetDevice(), который возвращает массив ServiceController, представляющий все драйверы устройств.

Окно списка заполняется с помощью связывания данных:

private System.ServiceProcess.ServiceController[] services;


public ServiceControlForm() {

 //

 // Требуется для поддержки Windows Form Designer

 //

 InitializeComponent();

 RefreshServiceList();

}


protected void RefreshServiceList() {

 services = ServiceController.GetServices();

 listBoxServices.DisplayMember = "DisplayName";

 listBoxServices.DataSource = services;

}

Теперь все службы Windows выводятся в окне списка и можно получить данные о каждой службе. Класс ServiceController имеет следующие свойства для данных о службе:

Свойства ServiceController CanPauseAndContinue Если службе можно послать запрос pause и continue, то возвращается true. CanShutdown true, если служба имеет программу обработки для выключения системы. CanStop true, если службу можно остановить. DependentServices Возвращает совокупность подчиненных служб. Если служба остановлена, то все подчиненные службы заранее останавливаются. ServicesDependentOn Возвращаем совокупность служб, которые зависят от этой службы. DisplayName Имя, которое должно выводиться для этой службы. MachineName Имя машины, на которой выполняется эта служба. ServiceName Имя службы. ServiceType Служба может выполняться внутри общего процесса, где более одной службы используют один и тот же процесс (Win32ShareProcess), или выполняться так, что существует только одна служба внутри процесса (Win32OwnProcess). Если служба может взаимодействовать с рабочим столом компьютера, то тип будет InteractiveProcess. Status Статус службы. Статус может быть running, stopped paused или в некотором промежуточном режиме, таком как start pending, stop pending и т.д.

В рассматриваемом приложении используются свойства DisplayName, ServiceName, ServiceType и Status для вывода данных о службе, а также CanPauseAndContinue и CanStop для включения и отключения кнопок Pause, Continue и Stop.

Метод OnSelectedIndexChanged() является методом обработки для окна списка. Он вызывается, когда пользователь выбирает службу в окне списка. В методе OnSelectedIndexChanged() внешнее имя и имя свойства задаются непосредственно с помощью свойств класса ServiceController. Статус и тип не могут просто задаваться, так как должна выводиться строка вместо числа, которое возвращает класс ServiceController. Метод SetServiceStatus() является вспомогательной функцией, просматривающей перечисление свойств Status для выводa строки статуса, а также включает и отключает кнопки. GetServiceTypeName() создает имя типа службы. ServiceType мы получаем из ServiceController.ServiceType представляет множество флажков, которые могут комбинироваться с помощью побитового оператора ИЛИ. Бит InteractiveProcess может задаваться вместе с Win32OwnProcess и Win32ShareProcess. Необходимо проверить, задан ли бит InteractiveProcess прежде чем переходить к проверке других значений:

protected string GetServiceTypeName(ServiceType type) {

 string serviceType = "";

 if ((type & ServiceType.InteractiveProcess) != 0) {

  serviceType = "Interactive ";

  type -= ServiceType.InteractiveProcess;

 }

 switch (type) {

 case ServiceType.Adapter:

  serviceType -= "Adapter";

  break;

 case ServiceType.FileSystemDriver:

 case ServiceType.KernelDriver:

 case ServiceType.RecognizerDriver:

  ServiceType += "Driver";

  break;

 case ServiceType.Win32OwnProcess:

  ServiceType += "Win32 Service Process";

  break;

 case ServiceType.Win32ShareProcess;

  ServiceType += "Win32 Shared Process";

  break;

 default:

  ServiceType += "unknown type " + type.ToString();

  break;

 }

 return ServiceType;

}


protected void SetServiceStatus(ServiceController controller) {

 buttonStart.Enabled = true;

 buttonStop.Enabled = true;

 buttonPause.Enabled = true;

 buttonContinue.Enabled = true;

 if (!controller.CanPauseAndContinue) {

  buttonPause.Enabled = false;

  buttonContinue.Enabled = false;

 }

 if (!controller.CanStop) {

  buttonStop.Enabled = false;

 }

 ServiceControllerStatus status = controller.Status;

 switch (status) {

 case ServiceControllerStatus.ContinuePending:

  textBoxServiceStatus.Text = "Continue Pending";

  buttonContinue.Enabled = false;

  break;

 case ServiceControllerStatus.Paused;

  textBoxServiceStatus.Text = "Paused";

  buttonPause.Enabled = false;

  buttonStart.Enabled = false;

  break;

 case ServiceControllerStatus.PausePending:

  textBoxServiceStatus.Text = "Pause Pending";

  buttonPause.Enabled = false;

  buttonStart.Enabled = false;

  break;

 case ServiceControllerStatus.StartPending:

  textBoxServiceStatus.Text = "Start Pending";

  buttonStart.Enabled = false;

  break;

 case ServiceControllerStatus.Running:

  textBoxServiceStatus.Text = "Running";

  buttonStart.Enabled = false;

  buttonContinue.Enabled = false;

  break;

 case ServiceControllerStatus.Stopped:

  textBoxServiceStatus.Text = "Stopped";

  buttonStop.Enabled = false;

  break;

 case ServiceControllerStatus.StopPending:

  textBoxServiceStatus.Text = "StopPending";

  buttonStop.Enabled = false;

  break;

 default:

  textBoxServiceStatus.Text = "Unknown status";

  break;

 }

}


protected void OnSelectedIndexChanged(object sender, System.EventArgs e) {

 ServiceController controller =

  (ServiceController)listBoxServices.SelectedItem;

 textBoxDisplayName.Text = controllerDisplayName;

 textBoxServiceType.Text =

  GetServiceTypeName(controller.ServiceType);

 textBoxServiceName.Text = controller.ServiceName;

 SetServiceStatus(controller);

}

Управление службой

С помощью класса ServiceController можно также посылать службе управляющие запросы.

Методы ServiceController Start() Start() сообщает SCM, что служба должна быть запущена. В нашей служебной программе вызывается OnStart(). Stop() Stop() вызывает OnStop() в нашей служебной программе с помощью SCM, если свойство CanStop задано как true в классе службы Pause() Pause() вызывает OnPause(), если свойство CanPauseAndContinue задано как true. Continue() Continue() вызывает OnContinue(), если свойство CanPauseAndContinue задано как true. ExecuteCommand() С помощью ExecuteCommand можно послать службе специальную команду.

Код для управления службой следует далее. Так как код для запуска, останова, приостановки и временной остановки аналогичен, то используется только одна программа обработки для четырех кнопок:


На Facebook В Твиттере В Instagram В Одноклассниках Мы Вконтакте
Подписывайтесь на наши страницы в социальных сетях.
Будьте в курсе последних книжных новинок, комментируйте, обсуждайте. Мы ждём Вас!

Похожие книги на "C# для профессионалов. Том II"

Книги похожие на "C# для профессионалов. Том II" читать онлайн или скачать бесплатно полные версии.


Понравилась книга? Оставьте Ваш комментарий, поделитесь впечатлениями или расскажите друзьям

Все книги автора Симон Робинсон

Симон Робинсон - все книги автора в одном месте на сайте онлайн библиотеки LibFox.

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

Отзывы о "Симон Робинсон - C# для профессионалов. Том II"

Отзывы читателей о книге "C# для профессионалов. Том II", комментарии и мнения людей о произведении.

А что Вы думаете о книге? Оставьте Ваш отзыв.