This returns a collection object containing the complete list of exchanges that the user can see. Exchanges do not correspond directly to the trading exchanges (such as CBOT, CME etc) but tend to be groupings of similar contracts at each exchange. E.g. CME has exchanges for Commodites, Equities and Currencies.
Data retrieval is asynchronous initially, and then cached in memory locally so you should always check the Complete property on the collection object (for Exchanges, Contracts and Markets) to ensure that the data has actually been retrieved. You do not need to do anything to request the data, it is done automatically as soon as the collection object is referenced. If the Complete flag is not set then the ExchangeListComplete event will be raised when the data has arrived. The collection data will remain cached in memory until the API is disposed of, even if you release all your references to the collection objects.
Each Exchange object in the Exchanges collection contains information on that exchange, such as its ExchangeID and its description. The ExchangeID will never change for an exchange so you can safely store it in user settings etc if needed. The Exchange object also contains a Contracts property that returns a collection of the Contracts in that exchange. Again, the contract collection is loaded asynchronously initially so you should check the Complete property before accessing data.
Each Contract object in the Contracts collection contains information on that contract, such as it’s ContractID, it’s description and type (future / option). The ContractID never changes for a contract so you can safely store it if needed. Note that ContractID’s are only unique within a single exchange, other exchanges may have exactly the same ContractID’s to represent different contracts. Additonally, the Contract object has a Markets property that returns a collection of all the markets for the contract (for all months, strategies, strikes etc). This collection loads data asynchronously so you should check the Complete properties before accessing data.