Click here to Skip to main content
15,879,326 members
Articles / Programming Languages / C#
Tip/Trick

C# NotificationCenter

Rate me:
Please Sign up or sign in to vote.
4.50/5 (6 votes)
10 Aug 2012CPOL2 min read 54.8K   3K   20   11
A NotificationCenterManager object (or simply, notification center) provides a mechanism for broadcasting information within a program.

Introduction

A NotificationCenterManager object (or simply, notification center) provides a mechanism for broadcasting information within a program. A NotificationCenterManager object is essentially a notification dispatch table.

Objects register with a notification center to receive notifications (Notification objects) using the AddObserver method. Each invocation of this method specifies a set of notifications. Therefore, objects may register as observers of different notification sets by calling these methods several times.

Each running C# program has a default notification center. You typically don’t create your own. A NotificationCenterManager object can deliver notifications only within a single program.

Background

There can be a few conflicting techniques to solve a problem. Any can be chosen to achieve your goal. However, sometimes I want to know what can fit better for this and that. One of those conflicting techniques are Events (using delegates) and Notification in a same process or a task. An Event is to have an object that fires an event when it's happened. Notification is to send an alarm to a monitoring object if something happens. For both, a monitoring object should be registered to some entities. So, mostly they are very similar.

But Notification is free form to be connected to another object. For example the mains form can send a notification to a User Control inside in another User Control without no connection between them.

Using the code

First of all create a NotificationCenterManager object. NotificationCenterManager uses the Singleton pattern so get an instance like his:

C#
using NotificationCenter;
NotificationCenterManager notificationCenterManager = NotificationCenterManager.Instance;

Next use the NotificationCenterManager instance to register to Notification with the method AddObserver:

C#
public class Observer
{
    public Observer()
    {
        NotificationCenterManager notificationCenterManager = NotificationCenterManager.Instance;
        notificationCenterManager.AddObserver(OnNotification, 
           "SomeNotification");// register to Notification "SomeNotification".
    }
    private void OnNotification(Notification p_notification)
    {
        DoSomething();
    }
}

Next use the NotificationCenterManager instance to post  a Notification with "Empty Message" with the method PostNotification:

C#
NotificationCenterManager.Instance.PostNotification("SomeNotification ");
// Post Notification "SomeNotification".

Use the NotificationCenterManager instance to post a Notification with "Notification Message" with the method PostNotification:

C#
Notification notification=new Notification(this,"Some Object With Message");
NotificationCenterManager.Instance.PostNotification("SomeNotification", notification);
// Post Notification "SomeNotification".

To remove matching entries from the receiver’s dispatch table use the NotificationCenterManager instance to unregister from Notification with the method RemoveObserver:

C#
NotificationCenterManager.Instance.RemoveObserver(OnNotification, "SomeNotification");
// OnNotification is the delegate to the Observer.

History

10/08/12: Initial post.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


Written By
Software Developer (Senior)
Israel Israel
Software Engineer with interest in .Net, C#, PHP ,Objective-c ,Java,JavaScript,HTML5

Programming since 1990(write my first QBasic program).
Web programming since 1995.
Started writing "hacks" at 14.
Build my First BBS at 14(through college BBSes) pre-'internet' at this point.
Assembly language "hacking" at 17.

Languages:

C/C++
C# .NET
Objective C
Java
PHP
MySQL
HTML1-5
CSS
Javascript
JQuery
JSON
XML
Assembly

Currently studying Computer vision,Image processing .

Comments and Discussions

 
GeneralMy vote of 4 Pin
srfox4-Mar-16 9:31
professionalsrfox4-Mar-16 9:31 
QuestionError fire Notification Pin
Member 1069907211-Apr-14 14:48
Member 1069907211-Apr-14 14:48 
AnswerRe: Error fire Notification Pin
One Man Crew19-Apr-14 9:07
One Man Crew19-Apr-14 9:07 
GeneralVery cool Pin
maxvale17-Dec-12 15:13
maxvale17-Dec-12 15:13 
QuestioniOS NSNotificationCenter Pin
lauhw200014-Oct-12 18:02
lauhw200014-Oct-12 18:02 
AnswerRe: iOS NSNotificationCenter Pin
One Man Crew15-Oct-12 3:39
One Man Crew15-Oct-12 3:39 
GeneralMy vote of 5 Pin
Dave Hickson11-Aug-12 21:28
Dave Hickson11-Aug-12 21:28 
GeneralRe: My vote of 5 Pin
One Man Crew11-Aug-12 21:36
One Man Crew11-Aug-12 21:36 
Thanks for the feedback. Smile | :)
GeneralMy vote of 3 Pin
Klaus Luedenscheidt10-Aug-12 17:35
Klaus Luedenscheidt10-Aug-12 17:35 
GeneralRe: My vote of 3 Pin
One Man Crew11-Aug-12 7:44
One Man Crew11-Aug-12 7:44 
GeneralRe: My vote of 3 Pin
Klaus Luedenscheidt11-Aug-12 18:02
Klaus Luedenscheidt11-Aug-12 18:02 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.