private void CreateUIElement3D(string itemId) { position p = csu.GetPosition(itemId); if (p != null) { Point3D point = grid.TransformServerToClientCoords(new Point3D(p.x, p.y, 0)); String direction = p.direction.ToString(); int classID = HelperFunctions.GetClassIdFromItemId(itemId); GridItem3D it = grid.Model.Dispatcher.Invoke(new GetGridItem3DDelegate(grid.CreateGridItem3D), new object[] { classID, point, direction }) as GridItem3D; it.instanceId = itemId; grid.Model.Dispatcher.BeginInvoke(new CreateUIElement3DDelegate(grid.PlaceItem), new object[] { it }); } }