Click here to Skip to main content
Click here to Skip to main content
 
Add your own
alternative version

Thread-safe Silverlight Cairngorm

, 20 Oct 2008
Some code changes and improvements that make the Silverlight Cairngorm thread-safe
SilverlightCairngorm.0.0.1.1.zip
SilverlightCairngorm
Business
Command
Control
Model
Properties
SilverlightCairngorm.0.0.1.2.zip
SilverlightCairngorm.0.0.1.3.zip
SilverlightCairngormDemo.0.0.1.1.zip
SilverlightCairngormDemo
SilverlightCairngorm
Business
Command
Control
Model
Properties
SilverlightCairngormDemo
Business
Command
Control
Model
Properties
View
SilverlightCairngormDemoWeb
App_Data
ClientBin
SilverlightCairngormDemo.xap
SilverlightCairngormDemoTestPage.aspx.exclude
SilverlightCairngormDemo.0.0.1.2.zip
SilverlightCairngormDemo.suo
SilverlightCairngormDemo.0.0.1.3.zip
SilverlightCairngormDemo.suo
using System;
using System.Collections.Generic;
using System.Text;

namespace SilverlightCairngorm.Control
{
    /// <summary>
    /// Used to dispatch system events, by raising an event that the 
    /// controller class subscribes to every time any system event is 
    /// raised.
	/// Client code has no need to use this class. (internal class)
    /// </summary>
    internal class CairngormEventDispatcher
    {
		private static readonly CairngormEventDispatcher _instance = new CairngormEventDispatcher();

		// Explicit static constructor to tell C# compiler
		// not to mark type as beforefieldinit
		static CairngormEventDispatcher()
		{
		}

		/// <summary>
		/// private constructor
		/// </summary>
		private CairngormEventDispatcher()
		{
		}

		/// <summary>
		/// Returns the single instance of the dispatcher
		/// </summary>
		/// <returns>single instance of the dispatcher</returns>
		public static CairngormEventDispatcher Instance { get { return _instance; } }

		/// <summary>
        /// The subscriber to a system event must accept as argument
        /// the CairngormEvent raised (within a CairngormEventArgs\
        /// object)
        /// </summary>
        /// <param name="sender">Unused</param>
		/// <param name="args">a CairngormEventArgs object, containing the raised event object</param>
        public delegate void EventDispatchDelegate(object sender, CairngormEventArgs args);
		/// <summary>
        /// The single event raised whenever a Cairngorm system event occurs
        /// </summary>
		public event EventDispatchDelegate EventDispatched = delegate { };

        /// <summary>
        /// dispatchEvent raises a normal .net event, containing the 
        /// instance of the CairngormEvent raised - to be handled by
        /// the Controller Class
        /// </summary>
        /// <param name="cairngormEvent">the raised Cairngorm Event</param>
        public void dispatchEvent(CairngormEvent cairngormEvent)
        {
			CairngormEventArgs args = new CairngormEventArgs(cairngormEvent);
			EventDispatched(null, args);
        }
    }
}

By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.

If a file you wish to view isn't highlighted, and is a text file (not binary), please let us know and we'll add colourisation support for it.

License

This article, along with any associated source code and files, is licensed under The Common Development and Distribution License (CDDL)

Share

About the Author

Modesty Zhang
Technical Lead
United States United States
Tech Lead of large scale consumer facing software offerings, specializing in Web and Mobile application architecting and development.
 
Specialties:
Web App/ iOS / Cocoa Touch / HTML5 / CSS3 / Ajax / jQuery / jQuery Mobile / jQuery UI / Node.js / Rich JavaScript Application / RESTful Web Services / Java EE 6 / Java 7 / PHP / Ruby on Rails / and Windows / .NET / RIA / Flex / Flash / Silverlight / Software Architecting / Front End Design and Development

| Advertise | Privacy | Mobile
Web03 | 2.8.140827.1 | Last Updated 20 Oct 2008
Article Copyright 2008 by Modesty Zhang
Everything else Copyright © CodeProject, 1999-2014
Terms of Service
Layout: fixed | fluid