Книга: ЯЗЫК ПРОГРАММИРОВАНИЯ С# 2005 И ПЛАТФОРМА .NET 2.0. 3-е издание
Поддержка асинхронного вызова
Поддержка асинхронного вызова
Поддержка асинхронного вызова Web-методов в .NET 2.0 сильно изменилась по сравнению с .NET 1.x. По своему предыдущему опыту вы можете знать, что агенты .NET 1.1 использовали методы BeginXXX()/EndXXX() для вызова Web-методов во вторичном потоке выполнения. Рассмотрите, например, следующие методы BeginSubtract() и EndSubtract().
public System.IAsyncResult BeginSubtract(int x, int y, System.AsyncCallback callback, object asyncState) {
return this.BeginInvoke("Subtract", new object[] {x, y}, callback, asyncState);
}
public int EndSubtract (System.IAsyncResult asyncResult) {
object[] results = this.EndInvoke(asyncResult);
return ((int) (results[0]));
}
Хотя wsdl.exe все еще генерирует эти знакомые методы Begin/End, в .NET 2.0 они считаются устаревшими, поскольку заменены новыми методами XXXAsync().
public void SubtractAsync(int x, int y) {
this.SubtractAsync(x, y, null);
}
Новые методы XXXAsync() (как и связанный с ними метод CancelAsync()) работают в паре с автоматически генерируемым вспомогательным методом (являющимся перегруженной версией некоторого специального метода XXXAsync()), который обрабатывает асинхронные операции, используя синтаксис событий C#. Если рассмотреть программный код агента, вы увидите, что wsdl.exe генерирует (для каждого Web-метода) пользовательский делегат, пользовательское событие и пользовательский класс "event args", чтобы получить соответствующий результат.
- Поддержка синхронного вызова
- Поддержка SMP
- Определение необходимого системного вызова
- Рекламно-информационная поддержка
- 6.1.5. Поддержка WINS
- 1.7. Поддержка Ubuntu
- Обзор методов асинхронного ввода
- Поддержка ссылочной целостности
- 4.18. Контроллер асинхронного обмена SCI
- Окончательная детализация плана перехода на новую систему и поддержка ее работы
- Поддержка форм и сценариев
- 8.4.3.2. Функция обратного вызова nftw()