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 ] ); } }
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 ] ); } }