Опубликован: 11.09.2006 | Уровень: специалист | Доступ: свободно
Лекция 7:

Асинхронное программирование

Подключение к web-сервису

Web-сервисы представляют собой отдельные компоненты, к которым можно получить доступ через Интернет и задействовать их в своем web-приложении. Их использование напоминает подключение компонент .NET или СOM в Windows-приложениях и зачастую существенно облегчает разработку. Более подробную информацию о web-сервисах вы сможете найти в литературе, посвященной технологии ASP.NET.

Подключение к web-сервисам — это, как правило, длительный процесс, занимающий несколько секунд. Рассмотрим два варианта подключения к сервису: один будет подключаться к web-службе синхронно, другой — асинхронно.

Создадим вначале web-сервис. В Visual Studio .NET создаем новый проект, в окне шаблонов выбираем ASP.NET Web Service и называем его HelloWorldService (рис. 7.6).

Создание web-сервиса

Рис. 7.6. Создание web-сервиса

Переключаемся в режим кода и убираем комментарии с существующего метода HelloWorld (рис. 7.7).

Режим кода HelloWorldService

увеличить изображение
Рис. 7.7. Режим кода HelloWorldService

Добавляем в тело метода следующий код:

[WebMethod]
	public string HelloWorld()
	{
		// Имитация длительной работы метода
		System.Threading.Thread.Sleep(2000);
		return "Hello World";
}

Компилируем проект и закрываем его. Теперь займемся Windows-приложением, которое будет вызывать Web-Service. Создайте новый проект и назовите его WebService. В окне Solution Explorer щелкаем правой кнопкой на папке References и в появившемся меню выбираем пункт Add Web Reference (рис. 7.8).

Приложение WebService в режиме дизайна. Добавление ссылки на web-сервис

увеличить изображение
Рис. 7.8. Приложение WebService в режиме дизайна. Добавление ссылки на web-сервис
Елена Дьяконова
Елена Дьяконова

При нажатии на Сумма в примере ArbitraryMethod из Лекция 7, VS 2013 выдается ошибка: 

Необработанное исключение типа "System.InvalidOperationException" в System.Windows.Forms.dll

Дополнительные сведения: Недопустимая операция в нескольких потоках: попытка доступа к элементу управления "lblResult" не из того потока, в котором он был создан.

Затем:

Необработанное исключение типа "System.InvalidOperationException" в mscorlib.dll

Дополнительные сведения: Для каждой асинхронной операции метод EndInvoke может вызываться только один раз.

Александр Сороколет
Александр Сороколет

Свойство WindowState формы blank Maximized. Не открывается почемуто на всё окно, а вот если последующую форму бланк открыть уже на макс открывается :-/