private void loadStartMstData() { string tableDirMaster = Utils.getTableDirMaster("mst_files"); string text = tableDirMaster + "mst_files.xml"; IEnumerable <XElement> enumerable = Enumerable.Select <XElement, XElement>(XElement.Load(text).Elements("item"), (XElement file) => file); List <XElement> list = Enumerable.ToList <XElement>(enumerable); int num = Enumerable.Count <XElement>(list); this.callCount = num; Mst_DataManager.masterAsyncDelegate masterAsyncDelegate = new Mst_DataManager.masterAsyncDelegate(this.LoadElements); for (int i = 0; i < num; i++) { string value = list.get_Item(i).get_Value(); IAsyncResult asyncResult = masterAsyncDelegate.BeginInvoke(value, new AsyncCallback(this.loadCompleteAsynch), masterAsyncDelegate); } }
private void loadCompleteAsynch(IAsyncResult ar) { Mst_DataManager.masterAsyncDelegate masterAsyncDelegate = (Mst_DataManager.masterAsyncDelegate)ar.get_AsyncState(); KeyValuePair <string, IEnumerable <XElement> > keyValuePair = masterAsyncDelegate.EndInvoke(ar); object obj = this.lockObj; lock (obj) { this.startMasterElement.Add(keyValuePair.get_Key(), keyValuePair.get_Value()); } Interlocked.Decrement(ref this.callCount); if (this.callCount <= 0) { this.isMasterInit = 2; this.initMasterCallback.Invoke(); this.initMasterCallback = null; } }