Background
I am converting media files to a new format and need a way of knowing if I've previously in current runtime, converted a file.
My solution
To hash each file and store the hash in an array. Each time I go to convert a file I hash it and check the hash against the hashes stored in the array.
Problem
My logic doesn't seem able to detect when I've already seen a file and I end up converting the same file multiple times.
Code
//Byte array of already processed files
 private static readonly List<byte[]> Bytelist = new List<byte[]>();      
        public static bool DoCheck(string file)
        {
            FileInfo info = new FileInfo(file);
            while (FrmMain.IsFileLocked(info)) //Make sure file is finished being copied/moved
            {
                Thread.Sleep(500);
            }
            //Get byte sig of file and if seen before dont process
            byte[] myFileData = File.ReadAllBytes(file);
            byte[] myHash = MD5.Create().ComputeHash(myFileData);
            if (Bytelist.Count != 0)
            {
                foreach (var item in Bytelist)
                {
                    //If seen before ignore
                    if (myHash == item)
                    {
                        return true;
                    }
                }
            }
            Bytelist.Add(myHash);
            return false;
        }
Question
Is there more efficient way of trying to acheive my end goal? What am I doing wrong?