使用 Managed 事件提交 API
當您使用可以提供事件作為個別項目的任何事件來源時,您可以使用自訂事件提供者中的 EventCollector 和 Event 類別。這些類別可以在 Microsoft.SqlServer.NotificationServices 命名空間中找到。
EventCollector 物件
EventCollector 物件會蒐集事件,然後將事件批次提交給 Notification Services 應用程式。當您建立 EventCollector 物件時,您必須利用應用程式和事件提供者名稱來初始化該物件。
事件物件
Event 物件會封裝單一事件的資料。當您建立 Event 物件時,您必須利用應用程式和事件類別名稱來初始化該物件,然後提供事件欄位的值。Event 物件的欄位由事件類別結構描述來定義。
附註: |
---|
您可以建立 Event 物件,但不將它初始化。這可讓您建立一個「中斷連接」的 Event 物件,這個物件不參考 Notification Services 應用程式若要使用這項技術,您在開發時必須知道事件類別名稱和事件欄位名稱。 |
您必須為您要建立的每個事件記錄建立、擴展及提交一個 Event 物件。將事件寫入 EventCollector 物件之後,您可以重複使用 Event 物件。
撰寫及認可事件
當您建立 Event 物件並利用事件資料擴展它之後,您可以利用 Write方法,將它加入 EventCollector 物件中。
EventCollector 物件也提供 Abort 方法。您可以呼叫這個方法來捨棄目前的事件批次。
EventCollector 和事件物件範例
這個範例使用下列命名空間:
- System
- Microsoft.SqlServer.NotificationServices
string instanceName = "Tutorial";
string applicationName = "Weather";
string eventClassName = "WeatherEvents";
string eventProviderName = "WeatherSPs";
// Create an NSInstance object.
NSInstance testInstance = new NSInstance(instanceName);
// Create an NSApplication object.
NSApplication testApplication =
new NSApplication(testInstance, applicationName);
// Create an EventCollector object.
EventCollector testEventCollector =
new EventCollector(testApplication, eventProviderName);
// Create and define an Event object.
Event evt = new Event(testApplication, eventClassName);
evt["City"] = "Seattle";
evt["Date"] = DateTime.Now;
evt["Low"] = 40;
evt["High"] = 50;
evt["Forecast"] = "Cloudy";
// Write the event to the event collector's batch
testEventCollector.Write(evt);
// Commit the event batch to the application database.
testEventCollector.Commit();
中斷連接的事件物件範例
這個範例顯示如何定義事件,但不利用 NSApplication 和 EventClass 來初始化 Event 物件。
// Initialize the Event object.
Event testEvent = new Event();
testEvent.EventClassName = "StockEvents";
// Use the Event object.
testEvent["StockSymbol"] = "AWKS";
testEvent["StockPrice"] = "58.35";