public void ReleaseDropFile(string uncFilePath)
        {
            string dropFileNameToDelete = null;

            foreach (string key in map.Keys)
            {
                DropFile df = map[key];
                if (df.UNCFilePath.ToLower() == uncFilePath.ToLower())
                {
                    df.UseCount--;
                    if (df.UseCount == 0)
                    {
                        dropFileNameToDelete = key;
                    }
                    break;
                }
            }
            if (dropFileNameToDelete != null)
            {
                DropFile df = map[dropFileNameToDelete];

                //delete the drop copy
                System.IO.File.Delete(df.UNCFilePath);

                map.Remove(dropFileNameToDelete);
            }
        }
 public string GetDropFilePath(string uniqueFileName, string filePath)
 {
     if (map.ContainsKey(uniqueFileName))
     {
         DropFile df = map[uniqueFileName];
         df.UseCount++;
         return df.UNCFilePath;
     }
     else
     {
         string destFile = Path.Combine(AppConfig.FileDrop.FullName, Guid.NewGuid().ToString() + Path.GetExtension(filePath));
         System.IO.File.Copy(filePath, destFile);
         DropFile df = new DropFile();
         df.UNCFilePath = destFile;
         df.UseCount = 1;
         map[uniqueFileName] = df;
         return destFile;
     }
 }
 public string GetDropFilePath(string uniqueFileName, string filePath)
 {
     if (map.ContainsKey(uniqueFileName))
     {
         DropFile df = map[uniqueFileName];
         df.UseCount++;
         return(df.UNCFilePath);
     }
     else
     {
         string destFile = Path.Combine(AppConfig.FileDrop.FullName, Guid.NewGuid().ToString() + Path.GetExtension(filePath));
         System.IO.File.Copy(filePath, destFile);
         DropFile df = new DropFile();
         df.UNCFilePath      = destFile;
         df.UseCount         = 1;
         map[uniqueFileName] = df;
         return(destFile);
     }
 }