private void _onServerDirectoryMediaSaved(object dir, MediaEventArgs e)
 {
     if (e.Media is ServerMedia priMedia &&
         priMedia.MediaStatus != TMediaStatus.Deleted)
     {
         ServerMedia compMedia = _findComplementaryMedia(priMedia);
         if (compMedia?.IsModified == true)
         {
             ThreadPool.QueueUserWorkItem(o => compMedia.Save());
         }
     }
 }
        private void _onServerDirectoryMediaSaved(object dir, MediaEventArgs e)
        {
            ServerMedia priMedia = e.Media as ServerMedia;

            if (priMedia != null && priMedia.MediaStatus != TMediaStatus.Deleted)
            {
                ServerMedia compMedia = _findComplementaryMedia(priMedia);
                if (compMedia != null)
                {
                    ThreadPool.QueueUserWorkItem((o) => compMedia.Save());
                }
            }
        }
        private void _onUpdatedTemplates(object o, EventArgs e)
        {
            var files = AnimationDirectory.Files;
            var templates = _casparDevice.Templates.All.ToList();
            foreach (Svt.Caspar.TemplateInfo template in templates)
            {
                ServerMedia media = (ServerMedia)files.FirstOrDefault(f => f is ServerMedia
                    && f.FileName == template.Name
                    && f.Folder == template.Folder);
                if (media == null)
                {
                    media = new ServerMedia()
                        {
                            MediaType = TMediaType.AnimationFlash,
                            MediaName = template.Name,
                            Folder = template.Folder,
                            FileName = template.Name,
                            FileSize = (UInt64)template.Size,
                            MediaStatus = TMediaStatus.Available,
                            LastUpdated = DateTimeExtensions.FromFileTime(template.LastUpdated.ToUniversalTime(), DateTimeKind.Utc),
                            MediaGuid = Guid.NewGuid(),
                            Directory = AnimationDirectory,

                        };
                    media.Save();
                }
                else // media != null
                {
                    if (media.FileSize != (UInt64)template.Size
                        || media.LastUpdated != DateTimeExtensions.FromFileTime(template.LastUpdated.ToUniversalTime(), DateTimeKind.Utc))
                    {
                        media.FileSize = (UInt64)template.Size;
                        media.LastUpdated = DateTimeExtensions.FromFileTime(template.LastUpdated.ToUniversalTime(), DateTimeKind.Utc);
                        media.Save();
                    }
                }
            }
            foreach (Media media in files)
            {
                Svt.Caspar.TemplateInfo i = templates.FirstOrDefault(t => media.FileName == t.Name && media.Folder == t.Folder);
                if (i == null)
                    AnimationDirectory.MediaRemove(media);
            }
        }