/// <summary> /// /// </summary> /// <exception cref="AggregateException"></exception> public void PreloadMagicNumbers() { var gates = new AutoResetEvent[6]; var g1 = new AutoResetEvent(false); var agex = new AggregateException("Exceptions occured resolving magic numbers"); gates[0] = g1; _client.Messaging.BeginGetSystemLookup(MagicNumberKeys.ApiOrderResponseDTO_StatusReason, 69, a => { try { MagicNumbers[MagicNumberKeys.ApiOrderResponseDTO_StatusReason] = _client.EndRequest<ApiLookupResponseDTO>(a); } catch (Exception ex) { agex.Exceptions.Add(ex); } finally { g1.Set(); } }, null); var g2 = new AutoResetEvent(false); gates[1] = g2; _client.Messaging.BeginGetSystemLookup(MagicNumberKeys.ApiOrderResponseDTO_Status, 69, a => { try { MagicNumbers[MagicNumberKeys.ApiOrderResponseDTO_Status] = _client.EndRequest<ApiLookupResponseDTO>(a); } catch (Exception ex) { agex.Exceptions.Add(ex); } finally { g2.Set(); } }, null); var g3 = new AutoResetEvent(false); gates[2] = g3; _client.Messaging.BeginGetSystemLookup(MagicNumberKeys.ApiTradeOrderResponseDTO_StatusReason, 69, a => { try { MagicNumbers[MagicNumberKeys.ApiTradeOrderResponseDTO_StatusReason] = _client.EndRequest<ApiLookupResponseDTO>(a); } catch (Exception ex) { agex.Exceptions.Add(ex); } finally { g3.Set(); } }, null); var g4 = new AutoResetEvent(false); gates[3] = g4; _client.Messaging.BeginGetSystemLookup(MagicNumberKeys.ApiTradeOrderResponseDTO_Status, 69, a => { try { MagicNumbers[MagicNumberKeys.ApiTradeOrderResponseDTO_Status] = _client.EndRequest<ApiLookupResponseDTO>(a); } catch (Exception ex) { agex.Exceptions.Add(ex); } finally { g4.Set(); } }, null); var g5 = new AutoResetEvent(false); gates[4] = g5; _client.Messaging.BeginGetSystemLookup(MagicNumberKeys.ApiActiveStopLimitOrderDTO_Applicability, 69, a => { try { MagicNumbers[MagicNumberKeys.ApiActiveStopLimitOrderDTO_Applicability] = _client.EndRequest<ApiLookupResponseDTO>(a); } catch (Exception ex) { agex.Exceptions.Add(ex); } finally { g5.Set(); } }, null); var g6 = new AutoResetEvent(false); gates[5] = g6; _client.Messaging.BeginGetSystemLookup(MagicNumberKeys.ApiOpenPositionDTO_Status, 69, a => { try { MagicNumbers[MagicNumberKeys.ApiOpenPositionDTO_Status] = _client.EndRequest<ApiLookupResponseDTO>(a); } catch (Exception ex) { agex.Exceptions.Add(ex); } finally { g6.Set(); } }, null); // System.Threading.WaitHandle.WaitAll API is not supported is silverlight/phone // WaitHandle.WaitAll(gates); g1.WaitOne(); g2.WaitOne(); g3.WaitOne(); g4.WaitOne(); g5.WaitOne(); g6.WaitOne(); if (agex.Exceptions.Count!=0) { throw agex; } #if SILVERLIGHT _preloaded = true; #endif _logger.Debug("PreloadMagicNumbersAsync complete"); }
/// <summary> /// /// </summary> /// <exception cref="AggregateException"></exception> public void PreloadMagicNumbers() { var gates = new AutoResetEvent[6]; var g1 = new AutoResetEvent(false); var agex = new AggregateException("Exceptions occured resolving magic numbers"); gates[0] = g1; _client.Messaging.BeginGetSystemLookup(MagicNumberKeys.ApiOrderResponseDTO_StatusReason, 69, a => { try { MagicNumbers[MagicNumberKeys.ApiOrderResponseDTO_StatusReason] = _client.EndRequest <ApiLookupResponseDTO>(a); } catch (Exception ex) { agex.Exceptions.Add(ex); } finally { g1.Set(); } }, null); var g2 = new AutoResetEvent(false); gates[1] = g2; _client.Messaging.BeginGetSystemLookup(MagicNumberKeys.ApiOrderResponseDTO_Status, 69, a => { try { MagicNumbers[MagicNumberKeys.ApiOrderResponseDTO_Status] = _client.EndRequest <ApiLookupResponseDTO>(a); } catch (Exception ex) { agex.Exceptions.Add(ex); } finally { g2.Set(); } }, null); var g3 = new AutoResetEvent(false); gates[2] = g3; _client.Messaging.BeginGetSystemLookup(MagicNumberKeys.ApiTradeOrderResponseDTO_StatusReason, 69, a => { try { MagicNumbers[MagicNumberKeys.ApiTradeOrderResponseDTO_StatusReason] = _client.EndRequest <ApiLookupResponseDTO>(a); } catch (Exception ex) { agex.Exceptions.Add(ex); } finally { g3.Set(); } }, null); var g4 = new AutoResetEvent(false); gates[3] = g4; _client.Messaging.BeginGetSystemLookup(MagicNumberKeys.ApiTradeOrderResponseDTO_Status, 69, a => { try { MagicNumbers[MagicNumberKeys.ApiTradeOrderResponseDTO_Status] = _client.EndRequest <ApiLookupResponseDTO>(a); } catch (Exception ex) { agex.Exceptions.Add(ex); } finally { g4.Set(); } }, null); var g5 = new AutoResetEvent(false); gates[4] = g5; _client.Messaging.BeginGetSystemLookup(MagicNumberKeys.ApiActiveStopLimitOrderDTO_Applicability, 69, a => { try { MagicNumbers[MagicNumberKeys.ApiActiveStopLimitOrderDTO_Applicability] = _client.EndRequest <ApiLookupResponseDTO>(a); } catch (Exception ex) { agex.Exceptions.Add(ex); } finally { g5.Set(); } }, null); var g6 = new AutoResetEvent(false); gates[5] = g6; _client.Messaging.BeginGetSystemLookup(MagicNumberKeys.ApiOpenPositionDTO_Status, 69, a => { try { MagicNumbers[MagicNumberKeys.ApiOpenPositionDTO_Status] = _client.EndRequest <ApiLookupResponseDTO>(a); } catch (Exception ex) { agex.Exceptions.Add(ex); } finally { g6.Set(); } }, null); // System.Threading.WaitHandle.WaitAll API is not supported is silverlight/phone // WaitHandle.WaitAll(gates); g1.WaitOne(); g2.WaitOne(); g3.WaitOne(); g4.WaitOne(); g5.WaitOne(); g6.WaitOne(); if (agex.Exceptions.Count != 0) { throw agex; } #if SILVERLIGHT _preloaded = true; #endif _logger.Debug("PreloadMagicNumbersAsync complete"); }