/// <summary>
/// Removes an application tile from the list.
/// </summary>
/// <param name="tile">The tile to remove.</param>
/// <remarks>Disposes the <see cref="AppTile"/> (it cannot be reused).</remarks>
private void RemoveTile(AppTile tile)
{
#region Sanity checks
if (tile == null) throw new ArgumentNullException(nameof(tile));
#endregion
// Flush queue first, to allow proper recoloring
AddQueuedTiles();
_flowLayout.Controls.Remove(tile);
if (tile.Visible) _flowLayout.Height -= tile.Height;
_tileDictionary.Remove(tile.InterfaceUri);
tile.Dispose();
RecolorTiles();
}