Обновление подписки
Используйте метод Update класса Subscription для изменения существующих подписок на приложение служб Notification Services. Доступ к отдельному объекту подписки осуществляется либо на основании идентификатора подписи, определяемого службами Notification Services при создании подписки, либо, более вероятно, путем пролистывания подписок подписчика с использованием объекта SubscriptionEnumeration.
В нижеприведенных примерах показано, как обновить подписку с помощью управляемого кода и с помощью Microsoft Visual Basic Scripting Edition (VBScript) для демонстрации взаимодействия COM.
Пример управляемого кода
В следующем примере показано получение конкретной подписки из списка подписок, а затем обновление этой подписки.
При разработке пользовательского интерфейса можно получать значения из текстовых полей и списков, а не из строк, внесенных в код, как показано ниже. Чтобы разрешить подписчику выбрать подписку, можно заполнить список идентификаторами подписок, возвращаемыми после перечисления подписок. После этого можно разрешить подписчику выбрать подписку, изменить значения полей, а затем обновить подписку.
// Create the NSInstance object.
NSInstance testInstance = new NSInstance("Tutorial");
// Create the NSApplication object.
NSApplication testApplication =
new NSApplication(testInstance, "Weather");
// Create the Subscription object.
Subscription testSubscription =
new Subscription(testApplication, "WeatherCity");
//Create a SubscriptionEnumeration object.
// that contains all of the subscriber's subscriptions
// in a specific subscription class
SubscriptionEnumeration testSubscriptionEnumeration =
new SubscriptionEnumeration(testApplication,
"WeatherCity", "TestUser1");
//Iterate through the subscriptions, finding the subscription
// to match. In a user interface, you would probably list the
// subscriptions in a list box and then let the user
// alter the data for the selected subscription
foreach (Subscription subscription in testSubscriptionEnumeration)
{
String city = subscription.GetFieldValue("City").ToString();
Console.WriteLine(city);
Console.WriteLine("Subscription ID: {0}", subscription.SubscriptionId);
if (city.Equals("Shoreline"))
testSubscription.SubscriptionId = subscription.SubscriptionId;
}
// Set all of the subscription data fields
testSubscription["DeviceName"] = "Work e-mail";
testSubscription["SubscriberLocale"] = "en-US";
testSubscription["City"] = "Edmonds";
testSubscription.Update();
Пример взаимодействия COM
В следующем примере VBScript показано использование метода SetFieldValue класса Subscription для установки значения полей подписки, относящихся к приложению:
Dim testInstance, testApplication, testSubscription
const instanceName = "Tutorial"
const applicationName = "Weather"
const subscriptionClassName = "WeatherCity"
' Create the NSInstance object.
set testInstance = WScript.CreateObject( _
"Microsoft.SqlServer.NotificationServices.NSInstance")
testInstance.Initialize instanceName
' Create the NSApplication object.
set testApplication = WScript.CreateObject( _
"Microsoft.SqlServer.NotificationServices.NSApplication")
testApplication.Initialize (testInstance), applicationName
' Create the Subscription object.
set testSubscription = WScript.CreateObject( _
"Microsoft.SqlServer.NotificationServices.Subscription")
testSubscription.Initialize (testApplication), subscriptionClassName
' Set the subscription ID so that
'the correct record is updated.
testSubscription.SubscriptionId = "2"
' Update the subscription record.
testSubscription.SetFieldValue "DeviceName", "Work e-mail"
testSubscription.SetFieldValue "SubscriberLocale", "en-US"
testSubscription.SetFieldValue "City", "Orlando"
testSubscription.Update
wscript.echo "Subscription updated."
См. также
Основные понятия
Создание объекта Subscription
Добавление подписки
Удаление подписки
Получение сведений о поле подписки
Заполнение списка языковых стандартов подписчиков
Заполнение списка часовых поясов
Другие ресурсы
Представление NS<SubscriptionClassName>View