We’ve been getting a few questions on how to use RSS Platform events in VB.NET. The problem faced by most inquiries was the fact that the interface returned by the GetWatcher() method call couldn’t be cast to the FeedFolderWatcher or FeedWatcher type. Instead the returned interface can be cast to IFeedFolderEvents_Event or IFeedEvents_Event interface. As done here:
Imports Microsoft.Feeds.Interop Module Module1 Dim WithEvents watcher As IFeedFolderEvents_Event Sub Main() Dim fm As IFeedsManager = New FeedsManager() Dim rootFolder As IFeedFolder = fm.RootFolder watcher = rootFolder.GetWatcher(FEEDS_EVENTS_SCOPE.FES_ALL, FEEDS_EVENTS_MASK.FEM_FOLDEREVENTS) AddHandler watcher.FeedDownloading, AddressOf watcher_Downloading End Sub Sub watcher_Downloading(ByVal path As String) Console.WriteLine("Downloading {0}", path) End Sub Sub watcher_DownloadCompleted(ByVal path As String, ByVal err As FEEDS_DOWNLOAD_ERROR) Handles watcher.FeedDownloadCompleted Console.WriteLine("Downloaded {0}", path) End Sub End Module
Imports Microsoft.Feeds.Interop
Module Module1
Dim WithEvents watcher As IFeedFolderEvents_Event Sub Main() Dim fm As IFeedsManager = New FeedsManager() Dim rootFolder As IFeedFolder = fm.RootFolder watcher = rootFolder.GetWatcher(FEEDS_EVENTS_SCOPE.FES_ALL, FEEDS_EVENTS_MASK.FEM_FOLDEREVENTS) AddHandler watcher.FeedDownloading, AddressOf watcher_Downloading End Sub Sub watcher_Downloading(ByVal path As String) Console.WriteLine("Downloading {0}", path) End Sub Sub watcher_DownloadCompleted(ByVal path As String, ByVal err As FEEDS_DOWNLOAD_ERROR) Handles watcher.FeedDownloadCompleted Console.WriteLine("Downloaded {0}", path) End Sub
Dim WithEvents watcher As IFeedFolderEvents_Event
Sub Main()
Dim fm As IFeedsManager = New FeedsManager() Dim rootFolder As IFeedFolder = fm.RootFolder watcher = rootFolder.GetWatcher(FEEDS_EVENTS_SCOPE.FES_ALL, FEEDS_EVENTS_MASK.FEM_FOLDEREVENTS) AddHandler watcher.FeedDownloading, AddressOf watcher_Downloading
Dim fm As IFeedsManager = New FeedsManager()
Dim rootFolder As IFeedFolder = fm.RootFolder
watcher = rootFolder.GetWatcher(FEEDS_EVENTS_SCOPE.FES_ALL, FEEDS_EVENTS_MASK.FEM_FOLDEREVENTS)
AddHandler watcher.FeedDownloading, AddressOf watcher_Downloading
End Sub
Sub watcher_Downloading(ByVal path As String)
Console.WriteLine("Downloading {0}", path)
Sub watcher_DownloadCompleted(ByVal path As String, ByVal err As FEEDS_DOWNLOAD_ERROR) Handles watcher.FeedDownloadCompleted
Console.WriteLine("Downloaded {0}", path)
End Module
The key is the highlighted part.
Note: We are aware that the IFeedFolderEvents_Event and IFeedEvents_Event interfaces do not appear in the Object Browser or in IntelliSense. We are looking into it.
Keep the feedback coming!
-Walter vonKoch