You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The RtdClocks sample shows a number of ways to implement RTD functions with Excel-DNA.
2
+
3
+
The RtdClocks solution has a number of projects - each project is a stand-alone add-in that shows one approach to implementing an RTD function.
4
+
5
+
## RtdClock-ExcelRtdServer
6
+
This project implements an RTD server using the Excel-DNA base class `ExcelRtdServer`. Any RTD server implemented in an Excel-DNA add-in should use the base class, rather than implementing the IRtdServer interface directly. The base class provides full access to all RTD features, and exposes a thread-safe and update notification that can be called at any time, at high frequency, from any thread.
7
+
Internally, Excel-DNA uses an ExcelRtdServer for all the other RTD-based features, including RxExcel / IObservable support.
8
+
9
+
## RtdClock-IExcelObservable
10
+
This project uses the higher-level abstraction of an IObservable / IObserver interface to implement the RTD function. In order to allow compatibility with .NET 2.0, the interfaces IExcelObservable / IExcelObserver are used by Excel-DNA, but the semantics is the same as the .NET 4.0 interfaces IObservable<object> / IObserver<object>.
11
+
12
+
## RtdClock-Rx
13
+
We show how to use the Reactive Extensions (Rx) library to define a simple timer. The Rx Observable is exposed as a UDF through the add-in using some helper utilities that are defined here.
14
+
15
+
## RtdClock-Rx-Registration
16
+
The Excel-DNA Registration extension library allows for custom registration extensions, including autoomatic registration of async and IObservable functions. This project shows how the registration of Rx / IObservable functions can be automatically done, exhibiting the cleanest minimal implementation of an RTD function.
[ComVisible(true)]// Required since the default template puts [assembly:ComVisible(false)] in the AssemblyInfo.cs
10
+
[ProgId(RtdClockServer.ServerProgId)]// If ProgId is not specified, change the XlCall.RTD call in the wrapper to use namespace + type name (the default ProgId)
0 commit comments