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(); }