private void loadCompleteAsynch(IAsyncResult ar) { masterAsyncDelegate masterAsyncDelegate = (masterAsyncDelegate)ar.AsyncState; KeyValuePair <string, IEnumerable <XElement> > keyValuePair = masterAsyncDelegate.EndInvoke(ar); lock (lockObj) { startMasterElement.Add(keyValuePair.Key, keyValuePair.Value); } Interlocked.Decrement(ref callCount); if (callCount <= 0) { isMasterInit = 2; initMasterCallback(); initMasterCallback = null; } }
private void loadStartMstData() { string tableDirMaster = Utils.getTableDirMaster("mst_files"); string uri = tableDirMaster + "mst_files.xml"; IEnumerable <XElement> source = from file in XElement.Load(uri).Elements("item") select(file); List <XElement> list = source.ToList(); int num = callCount = list.Count(); masterAsyncDelegate masterAsyncDelegate = LoadElements; for (int i = 0; i < num; i++) { string value = list[i].Value; var a = masterAsyncDelegate.Invoke(value); // masterAsyncDelegate.BeginInvoke(value, loadCompleteAsynch, masterAsyncDelegate); // loadCompleteAsynch(); loadCompleteAsynch2(a); } }