Example #1
0
        ///////////////////////////////////////////////////////////////////////

        #region Private Constructors
        private Event(
            object syncRoot,         /* in: OPTIONAL */
            Delegate @delegate,      /* in: OPTIONAL */
            EventType type,          /* in */
            EventFlags flags,        /* in */
            EventPriority priority,  /* in */
            Interpreter interpreter, /* in: OPTIONAL */
            string name,             /* in: OPTIONAL */
            DateTime dateTime,       /* in */
            EventCallback callback,  /* in: OPTIONAL */
            IClientData clientData   /* in: OPTIONAL */
            )
        {
            this.syncRoot    = syncRoot;
            this.@delegate   = @delegate;
            this.type        = type;
            this.flags       = flags;
            this.priority    = priority;
            this.interpreter = interpreter;
            this.name        = name;
            this.dateTime    = dateTime;
            this.callback    = callback;
            this.clientData  = clientData;

            //
            // NOTE: Setup inter-thread communication event.
            //
            doneEventName = FormatOps.EventName(interpreter,
                                                typeof(Event).Name, name, GlobalState.NextEventId(
                                                    interpreter));

            doneEvent = ThreadOps.CreateEvent(doneEventName);

            //
            // NOTE: Setup the initial result state.
            //
            ResetResultData();

            //
            // NOTE: Keep track of how many event objects are created
            //       within this AppDomain.
            //
            Interlocked.Increment(ref createCount);
        }