
This is the Title of the Book, eMatter Edition
Copyright © 2007 O’Reilly & Associates, Inc. All rights reserved.
Wrapping Sealed Classes to Add Events
|
499
The notification callback method specified in the callback parameter accepts a sin-
gle parameter of type
IAsyncResult. This parameter can be cast to an AsyncResult
type and used to set up the call to the EndInvoke method. If you want to handle any
exceptions thrown by the asynchronous delegate in the notification callback, wrap
the
EndInvoke method in a try/catch exception handler.
See Also
See the “Delegate Class” and “Asynchronous Delegates” topics in the MSDN docu-
mentation.
9.5 Wrapping Sealed Classes to Add Events
Problem
Through the use of inheritance, adding events to a nonsealed class is fairly easy. For
example, inheritance is used to add events to a
Hashtable object. However, adding
events to a sealed class, such as
System.IO.DirectoryInfo, requires a technique other
than inheritance.
Solution
To add events to a sealed class, such as the DirectoryInfo class, wrap it using
another class, such as the
DirectoryInfoNotify class defined in Example 9-3.
You can use the FileSystemWatcher class (see Recipes 12.23 and 12.24)
to monitor the filesystem changes asynchronously due to activity out-
side of your program, or you can use the
DirectoryInfoNotify class
defined here to monitor your program’s activity when using the file-
system.
Example 9-3. Adding ...