private bool checkMapExist(mapInfo map)
 {
     Directory.CreateDirectory("maps");
     string fpath=Path.Combine("maps",map.name);
     if (!File.Exists(fpath)) return false;
     var fstream = File.OpenRead(fpath);
     var md5 = System.Security.Cryptography.MD5.Create();
     var localHash = md5.ComputeHash(fstream);
     fstream.Dispose();
     if (localHash.Length != map.hashCode.Length) return false;
     for (int i = 0; i < localHash.Length; i++) {
         if (localHash[i] != map.hashCode[i]) {
             return false;
         }
     }
     return true;
 }
        void frmServer_Load(object sender, EventArgs e)
        {
            //читаем карты - просто смотрим все файлы в папке
            Directory.CreateDirectory("maps");
            var files=Directory.GetFiles("maps");
            foreach (var file in files) {
                try {

                    Image im = Image.FromFile(file);
                    mapInfo map = new mapInfo();
                    clsGame game=new clsGame();
                    MD5 md5 = MD5.Create();
                    var fstream=File.OpenRead(file);
                    map.hashCode = md5.ComputeHash(fstream);
                    map.width = (ushort)im.Width;
                    map.height = (ushort)im.Height;
                    map.name = Path.GetFileName(file);

                    fstream.Close();
                    fstream.Dispose();
                    im.Dispose();
                    lstGames.Items.Add(map.name);
                    game.Map = map;
                    games.Add(map.name, game);
                }catch(Exception ex){
                }
            }
            connectWaitThread = new Thread(connectWaitProcess);
            threads.Add(connectWaitThread);
            connectWaitThread.Start();
        }