Имя Пароль
Зарегистрироваться


* При перепечатке материалов ссылка на www.SeoLiga.ru обязательна! RSS



Создание экземпляров элементов управления ActiveX
8 февраля 2009

ActiveX — это одна из реализаций СОМ, поэтому процедура добавления ссылки на
библиотеку типов элементов управления ActiveX практически не отличается от та-
ковой для библиотеки СОМ. Выполнив ее, вы получаете возможность добавить эле-
менты управления ActiveX на Toolbox, чтобы в период разработки добавлять их эк-
земпляры к приложению.
Примечание Размещение элементов управления ActiveX на вкладке Windows Forms
допустимо, хотя существенно снижает производительность. Поэтому элементы уп-
равления ActiveX следует использовать, только если нет .NET-элементов управле-
ния с соответствующими функциями.
> Создание экземпляра элемента управления ActiveX
1. Добавьте ссылку на библиотеку типов, в которой находится нужный элемент уп-
равления ActiveX (о добавлении ссылок рассказывалось немного раньше).
2. Поместите элемент управления ActiveX на панель Toolbox, как описано в главе 7.
3. Чтобы добавить к проекту экземпляр элемента управления в период разработки,
перетащите его с Toolbox в окно дизайнера. Это можно сделать и по-другому,
объявив класс элемента управления и создав его экземпляр в коде. Второй под-
ход позволяет динамически создавать элементы управления ActiveX в период
выполнения (глава 2).
Доступ к Web-сервисам
Web-сервисы (Web Service) — классы, размешенные в Интернете, — без сомнения
относятся к важным компонентам .NET Framework. После объявления и создания
экземпляра Web-сервиса в приложении вы сможете синхронно или асинхронно
вызвать его методы.
Ссылки на Web-сервисы также создают в окне Solution Explorer. Для этого нуж-
но вызвать это окно, щелкнуть правой кнопкой узел References, расположенный
ниже узла вашего проекта, и выбрать из контекстного меню команду Add Web
Reference — откроется одноименное окно (рис. 8-5), в котором задают URL Web-
компонента, или находят его, если URL неизвестен.
В последнем случае вы получите доступ к каталогам, в которых хранится нуж-
ный ресурс. В каталоге Universal Description Discovery Integration (UDDI) хранится
список провайдеров, которые предоставляют услуги в виде Web-сервисов. При вы-
боре провайдера отображается список предоставляемых им Web-сервисов. Если
щелкнуть Web-сервис, в левой панели появляется контакт XML, а в правой — имя
Web-сервиса. Чтобы увидеть более «дружественное» описание Web-сервиса, удали-
те из URL строку «7WSDL» и перезагрузите страницу. Найдя нужную Web-ссылку,
щелкните кнопку Add Reference, чтобы добавить ее в проект.
При создании экземпляра Web-сервиса .NET Framework в действительности со-
здает экземпляр класса гтрокси, представляющего этот Web-сервис. Класс прокси
существует в приложении и предоставляет все методы, поддерживаемые Web-сер-
висом. Вызов любого из этих методов передается Web-сервису, который находится
в Интернете по заданному адресу. Экземпляры Web-сервисов создают так же, как
экземпляры любых других компонентов. Следующий пример демонстрирует созда-
ние экземпляра Web-сервиса WebServicel'.
Visual Basic .КЕТ
Dim myService As New WebServicel
Visual C#
WebServicel myService - new WebService1();
Вызвать Web-сервис можно синхронно либо асинхронно. Синхронный вызов на-
поминает вызов обычной функции. В следующем примере показан синхронный
вызов метода myMethod Web-сервиса myService. Этот пример предполагает наличие
ссылки на экземпляр этого Web-сервиса:
Visual Basic .NET
myService. myMethodO
Visual C#
myService.myMethod();
Синхронный вызов метода Web-сервиса исполняется так же, как вызов обычно-
го метода. Но, поскольку при этом происходит обращение к ресурсам Интернета,
время отклика увеличивается, а исполнение приложения приостанавливается до
завершения синхронного вызова Web-метода. Чтобы избежать задержек в работе
программы из-за ожидания завершения вызова Web-сервиса, можно вызывать ме-
тоды Web-сервиса асинхронно. В этом случае создается отдельный поток для взаи-
модействия с Web-сервисом, а пока Web-сервис обрабатывает запрос, исполнение
программы продолжается, как обычно. На каждую синхронную версию метода Web-
сервиса приходятся по две асинхронные, имена которых образуются из имени син-
хронной версии Web-метода и префиксов Begin и End. Так, если у Web-сервиса есть
метод MyMethod, его асинхронные версии называются BeginMyMefhod и EndMy-
Method.
Асинхронный вызов Web-метода начинается с вызова соответствующего метода
Begin. Помимо обычных параметров, требуемых при синхронном вызове, методу
Begin необходим делегат AsyncCailback, представляющий метод обратного вызова для
данного Web-метода, и параметр типа Object, позволяющий приложению переда-
вать нестандартные сведения о состоянии.
Каждый метод Begin возвращает значение типа lAsyncResult. Этот интерфейс ис-
пользуется соответствующим методом End для извлечения результатов асинхрон-
ного метода. Сигнатура метода обратного вызова, заданного делегатом AsyncCailback,
должна включать параметр типа lAsyncResult. В свою очередь, метод обратного
вызова вызывает метод End, который извлекает данные. Следующий пример иллю-
стрирует асинхронный вызов метода MyMethod с указанием метода обратного вызо-
ва и извлечение результатов MyMethod. При этом предполагается, что MyMethod —
это метод Web-сервиса с именем WebServicel, возвращающий строковое значение.
Visual Basic .NET
Public Class AsyncDemo
Dim myService As WebServicel
Public Sub CallMethodAsynchronouslyO
myService - New WebServicel ()
Создать делегат AsyncCallback с помощью оператора AddressOf.
Этот объект необходим для вызова метода, но в этом примере
он не используется.
myService. BeginMyMethodfAddressOf CallBack, New ObjectO)
End Sub
Public Sub CallBack(ByVal e as lAsyncResult)
Dim myString As String
Данные извлекают с помощью метода 'End', передав ему
в качестве параметра объект lAsyncResult.
myString = myService. EndMyMethod(e)
End Sub
End Class
Visual C#
public class AsyncDemo
myService ~ new WebService1();
// Создать делегат AsyncCallback, указывающий метод обратного вызова.
System. AsyncCallback myCallBack - new
System. AsyncCallback( CallBack );
// Этот объект необходим для вызоаа метода, но
// в этом примере он не используется.
myService. BeginMyMethod(nyCallBack, new objectf)):
}
public void CallBackflAsyncResult e)
{
string myString;
// Данные извлекают с помощью метода 'Enc', передав ему
// в качестве параметра объект lAsyncResult.
myString = myService. EndMyMethod(e);
Указать метод обратного вызова необходимо, но использовать его не обязатель-
но, поскольку можно извлечь данные в методе Begin, вызвав End напрямую. Если
метод End вызывается асинхронно, исполнение программы приостанавливается до
его завершения. Вот пример, иллюстрирующий это:
Visual Basic .NET
Public Sub AsyncDemoO
Dim myService As New WebServicel
Dim Async as ZAsyncResult
' Записать lasyncResult, который вернул метод 'Begin' в локальную
' переменную. Делегат метода обратного вызова необходим,
но для извлечения данных он не используется.
Async - myService.BeginMyMethod(AddressOf SomeMethod, New ObjectO)
' Здесь выполняются действия, сильно загружающие процессор.
Dim iiyString As String
1 Если метод Begin еще не завершился, исполнение приложения
приостанавливается, пока это не произойдет.
nyString = myService.EndMyMethod(Async)
Erd Suo
Visual C#
public void AsyncDemoO
{
WeoServicel myService = new WeoService1():
lAsyncResult Async;
// Записать lasyncResult, который вернул метод 'Begin' в локальную
// переменную. Делегат метода обратного вызова необходим,
// но для извлечения данных он не используется.
System.AsyncCallback myCallBack - new
System.AsyncCallback(SomeMethod);
Async = myService.BeginMyMetnod(myCallBack, new object());
// Здесь выполняются действия, сильно загружающие процессор,
string rnyString;
/,/ Если метод Begin еще не завершился, исполнение приложения
// приостанавливается, пока это не произойдет.
myString = myService.EndMyMethod(Async);
}
^ Создание ссылки на Web-сервис
1. В окне Solution Explorer щелкните правой кнопкой узел References и выберите
из контекстного меню команду Add Web Reference.
2. Укажите ссылку на Web-сервис, найденный в каталоге UDDI, либо введите ад-
рес Web-сервиса вручную. Щелкните кнопку Add Reference, чтобы добавить
ссылку в проект.
3. Добавив ссылку, можно создавать экземпляры Web-сервиса, как обычно.
*• Как синхронно вызвать метод Web-сервиса
1. Создайте экземпляр Web-сервиса.
2. Вызовите нужный метод, как обычно.
^ Как асинхронно вызвать метол Web-сервиса
1. Объявите метод обратного вызова, принимающий параметр типа JAsyncResult.
2. Инициируйте асинхронный вызов. Для этого вызовите метод Begin соответству-
ющего Web-метода, передав ему делегат метода обратного вызова.
3. Из метода обратного вызова (или другого метода) вызовите соответствующий
метод End, чтобы извлечь данные; передайте ему объект IAsyncResu.lt, который
вернул метод Begin.

Теги: .NET

Статьи по теме:

Перечисления CTS
Свойства-наборы
Тестирование элемента управления
Редакторы свойств программы установки
Ограничения Foreign Key
Структура .NET-приложений
Создание компонента DoughnutMachine
Модификаторы доступа к членам
Преобразование типов
Создание проекта установочной программы
Parsing Expression Grammar Support for C# 3.0 Part 1 – PEG Lib and Parser Generator
Применение трассировочных переключателей
Реализация свойств
Объект Graphics
Типы данных .NET Framework
| .NET | Pavel |
 


Пн Вт Ср Чт Пт Сб Вс
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30


     



Rambler's Top100

Данный сайт или домен продается ICQ: 403-353-727

© 2009 Seoliga.ru | .NET | Создание экземпляров элементов управления ActiveX. Регион сайта: Москва и Санкт-Петербург