public void Reload(object param = null)
        {
            if (!CanReload(param))
            {
                return;
            }
            //new Thread(delegate()
            //    {
            List <PgAtM.PgAttributeFileM> listFiles = new List <PgAtM.PgAttributeFileM>();

            using (var SQLCmd = new SqlWork(_connect))
            {
                SQLCmd.sql = string.Format(@"
                                    SELECT ""{2}"", ""{4}"", dataupd, img_preview, file_name, is_photo
                                    FROM ""{0}"".""{1}""
                                    WHERE ""{4}"" = :id_obj
                                    ORDER BY file_name",
                                           AttributeVM.Table.SchemeName,
                                           AttributeVM.Table.FileInfo.TableName,
                                           AttributeVM.Table.FileInfo.FieldId,
                                           AttributeVM.Table.FileInfo.FieldFile,
                                           AttributeVM.Table.FileInfo.FieldIdObj);
                var Params = new IParams[]
                {
                    new Params(":id_obj", AttributeVM.AttributesListVM.PkAttribute.Value, (AttributeVM.AttributesListVM.PkAttribute.Field as PgM.PgFieldM).DbType)
                };
                SQLCmd.ExecuteReader(Params);
                bool hasPreview = false;
                while (SQLCmd.CanRead())
                {
                    var id       = SQLCmd.GetInt32(AttributeVM.Table.FileInfo.FieldId);
                    var file     = Files.FirstOrDefault(f => f.IdFile == id);
                    var fileName = SQLCmd.GetString("file_name");
                    if (file == null)
                    {
                        var preview = SQLCmd.GetBytes("img_preview");
                        hasPreview = (preview != null);

                        if (!hasPreview)
                        {
                            preview = FilePreviewController.GetIcon(System.IO.Path.GetExtension(fileName));
                        }
                        var imgPreview = FilePreviewController.GetBitmapImage(preview);

                        file = new PgAtM.PgAttributeFileM(
                            source: this,
                            idFile: id,
                            imgPreview: imgPreview);
                    }
                    file.Date     = SQLCmd.GetValue <DateTime>("dataupd");
                    file.FileName = fileName;
                    listFiles.Add(file);
                }
                ExtraFunctions.Sorts.SortList(_files, listFiles);
            }
            //}).Start();
        }
        void Add(object param = null)
        {
            if (!CanAdd(param))
            {
                return;
            }

            string[] fileNames = FuncOpenDialogToAddFilesExecution();
            //new Thread(delegate()
            //    {
            for (int i = 0; i < fileNames.Length; i++)
            {
                string fileName   = fileNames[i];
                byte[] myData     = GetFile(fileName);
                byte[] imgPreview = null;

                if (myData == null)
                {
                    continue;
                }
                if (myData.Length > 5242880)
                {
                    string sizeFile = ConvertSizeFile(myData.Length);
                    var    result   = System.Windows.MessageBox.Show("Файл превышает максимальный размер в 5 МБ (текущий: " + sizeFile + ")!\nХотите пропустить файл или отменить загрузку?\n\nДа  - пропустить файл.\nНет - прервать загрузку.", "Превышение размера файла!", System.Windows.MessageBoxButton.YesNo, System.Windows.MessageBoxImage.Warning);
                    if (result == System.Windows.MessageBoxResult.Yes)
                    {
                        continue;
                    }
                    else
                    {
                        break;
                    }
                }
                Bitmap preview = FilePreviewController.GetPreviewPhoto(myData, Path.GetExtension(fileName));
                if (preview != null)
                {
                    imgPreview = preview.ToByteArray();
                }

                bool isPhoto = (imgPreview != null);

                using (var sqlCmd = new SqlWork(_connect))
                {
                    string sql =
                        string.Format(
                            @"
            INSERT INTO ""{0}"".""{1}"" ({2}, {3}, img_preview, file_name, is_photo) 
            VALUES (:id_obj, :file_blob, :img_preview, :file_name, :is_photo);",
                            AttributeVM.Table.SchemeName,
                            AttributeVM.Table.FileInfo.TableName,
                            AttributeVM.Table.FileInfo.FieldIdObj,
                            AttributeVM.Table.FileInfo.FieldFile);

                    sqlCmd.sql = sql;

                    var pk      = AttributeVM.AttributesListVM.PkAttribute;
                    var pParams = new IParams[]
                    {
                        new Params(":id_obj", pk.Value, (pk.Field as PgM.PgFieldM).DbType),
                        new Params(":file_blob", myData, NpgsqlTypes.NpgsqlDbType.Bytea),
                        new Params(":img_preview", imgPreview, NpgsqlTypes.NpgsqlDbType.Bytea),
                        new Params(":file_name", Path.GetFileName(fileName), NpgsqlTypes.NpgsqlDbType.Text),
                        new Params(":is_photo", isPhoto, NpgsqlTypes.NpgsqlDbType.Boolean)
                    };
                    sqlCmd.ExecuteNonQuery(pParams);
                }
            }
            Reload();
            //}).Start();
        }