Implementing a Managed OnMdbShutdown Event Sink

Topic Last Modified: 2006-06-12

The following samples catch the OnMDBShutDown Method and write information to a log file. See Store Event Sink Bit Flags and Building Managed Event Sink DLLs for more information.

Visual Basic.NET

Example

Option Explicit On
Option Strict On

' Add project references to the System.EnterpriseServices, ADODB,
' Interop.Exoledb, and SignedExevtsnk .NET components.
Imports System.IO
Imports System.EnterpriseServices
Imports Exoledb = Interop.Exoledb
Imports ExevtsnkLib = SignedExevtsnk
Imports ADODB
Imports System.Reflection

Namespace ExchangeSDK.Snippets.VBNet

Public Class SystemEvents
   Inherits ServicedComponent
   Implements Exoledb.IExStoreSystemEvents

   ' Logfile path.
   Private Const LOGFILE As String = "C:\\evtlog.txt"

   Public Sub OnMDBShutDown(ByVal bstrMDBGuid As String, ByVal lFlags As Integer) _
                 Implements Interop.Exoledb.IExStoreSystemEvents.OnMDBShutDown

      ' Variables.
      Dim sr As StreamWriter

      ' Open the log file, append text to file.
      sr = File.AppendText(LOGFILE)

      Try
         sr.WriteLine("[VB.NET Event Sink]   OnMDBShutDown()")

         ' Write the GUID of MDB shutting down to the log.
         sr.WriteLine("MDB Guid: " + bstrMDBGuid)

         ' Write the event flag to the log.
         sr.WriteLine("lFlags: " & lFlags)

      Catch ex As Exception

         ' Write exception info to the log.
         sr.WriteLine("Exception message: " & ex.Message)
         sr.WriteLine("")

      End Try

      ' Close the stream writer.
      sr.Close()
   End Sub

   Public Sub OnMDBStartUp(ByVal bstrMDBGuid As String, _
                           ByVal bstrMDBName As String, _
                           ByVal lFlags As Integer) _
              Implements Interop.Exoledb.IExStoreSystemEvents.OnMDBStartUp

      ' Implement OnMDBStartUp code here.

   End Sub

   Public Sub OnTimer(ByVal bstrURLItem As String, ByVal lFlags As Integer) _
                 Implements Interop.Exoledb.IExStoreSystemEvents.OnTimer

      ' Implement OnTimer code here.

   End Sub
End Class
End Namespace

C#

Example

using System;
using System.Reflection;
using System.Diagnostics;
using Exoledb = Interop.Exoledb;
using ADODB;
using System.EnterpriseServices;
using System.IO;

namespace ExchangeSDK.Snippets.CSharp
{
   public class SystemEvents : ServicedComponent, Exoledb.IExStoreSystemEvents
   {
      // Logfile path.
      private const string LOGFILE = "C:\\evtlog.txt";

      public void OnMDBShutDown(string bstrMDBGuid, int lFlags)
      {
         // Variables.
         StreamWriter sr;

         // Open the log file, append text to file.
         sr = File.AppendText(LOGFILE);

         try
         {
            sr.WriteLine ("[C# Event Sink]   OnMDBShutdown()");
            sr.WriteLine("MDBGuid: " + bstrMDBGuid);
            sr.WriteLine("lFlags: " + lFlags);
         }
         catch(Exception ex)
         {
            // Write exception info to the log.
            sr.WriteLine("Exception message: " + ex.Message);
            sr.WriteLine("");
         }

         // Close the stream writer.
         sr.Close();
      }

      public void OnTimer(string bstrURLItem, int lFlags)
      {
         //  Implement OnTimer code here.
      }

      public void OnMDBStartUp(string bstrMDBGuid, string bstrMDBName, int lFlags)
      {
         // Implement OnMDBStartUp code here.
      }
   }
}