public void GetObjectList(IEnumerable <SpeckleObjectPlaceholder> objects, Action <List <SpeckleObject> > callback) { SpeckleObject[] speckleObjectList = new SpeckleObject[objects.Count()]; int index = 0, insertedCount = 0; foreach (var newGuy in objects) { if (SentObjects.ContainsKey(newGuy.Hash)) { speckleObjectList[index] = SentObjects[newGuy.Hash]; insertedCount++; if (insertedCount == objects.Count()) { callback(speckleObjectList.ToList()); } } else { int indexCopy = index; ObjectGetAsync(newGuy.DatabaseId).ContinueWith(tres => { speckleObjectList[indexCopy] = tres.Result.SpeckleObject; SentObjects[newGuy.Hash] = tres.Result.SpeckleObject; insertedCount++; if (insertedCount == objects.Count()) { callback(speckleObjectList.ToList()); } }); } index++; } }