private static void ProcessScalableThumbnails(object state)
        {
            try
            {
                List <ceScalableThumbnail> list = null;
                using (DbManager db = new DbManager())
                {
                    ScalableThumbnailAccessor sta = ScalableThumbnailAccessor.CreateInstance <ScalableThumbnailAccessor>(db);
                    list = sta.GetUnscaledThumbnail();

                    // queue the task in random order
                    Random r = new Random();
                    while (list.Count > 0)
                    {
                        int index = r.Next(list.Count - 1);

                        if (!string.IsNullOrEmpty(list[index].OrginalFileName))
                        {
                            ProcessScalableThumbnail(db, list[index]);
                        }
                        list.RemoveAt(index);
                    }
                }
            }
            catch (Exception ex)
            {
                Logger.Exception(ex);
            }

            if (state == null)
            {
                ProcessScalableThumbnails(typeof(ScalableThumbnailProcessor));
            }
        }