Beispiel #1
0
        public void CallSystemTasksAsynchronous(IEnumerable<string> systemNames )
        {
            if ( systemNames == null )
            {
                ArgumentNullException argnEx = new ArgumentNullException( "systemNames" );
                this.LogManager.Trace( Namespace.LoggerName, LogLevel.Fatal, argnEx, argnEx.Message );
                throw argnEx;
            }

            int length = systemNames.Count<string>();
            IAsyncResult[] results = new IAsyncResult[ length ];
            PerformTaskDelegate[] delegates = new PerformTaskDelegate[ length ];

            for ( int i = 0; i < length; i++ )
            {
                ISystem system = this.SystemsManager.GetSystem( systemNames.ElementAt<string>( i ) );

                delegates[ i ] = system.PerformTask;
                results[ i ] = delegates[ i ].BeginInvoke( null, null );
            }

            for ( int i = 0; i < delegates.Length; i++ )
            {
                delegates[ i ].EndInvoke( results[ i ] );
            }
        }
Beispiel #2
0
        public void CallAllSystemTasksAsynchronous()
        {
            ISystem[] systems = this.SystemsManager.RegisteredSystems.ToArray<ISystem>();
            IAsyncResult[] results = new IAsyncResult[ systems.Count<ISystem>() ];
            PerformTaskDelegate[] delegates = new PerformTaskDelegate[ systems.Count<ISystem>() ];

            for ( int i = 0; i < systems.Count<ISystem>(); i++ )
            {
                delegates[ i ] = systems[ i ].PerformTask;
                results[ i ] = delegates[ i ].BeginInvoke( null, null );
            }

            for ( int i = 0; i < delegates.Length; i++ )
            {
                delegates[i].EndInvoke( results[ i ] );
            }
        }