Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
3 / 3 / 3
Регистрация: 24.05.2017
Сообщений: 32
.NET 4.x

Переполнение памяти

19.11.2018, 03:12. Показов 1598. Ответов 0

Студворк — интернет-сервис помощи студентам
Снова здравствуй, мой любимый форум любимый форум.
Собственно говоря проблема тут такая же как и в этом посте: Старый пост

Во время прогрузки изображений ОЗУ буквально на 50 артах съедается программой, и у меня никак не получается решить эту проблему. Следуя советам в предыдущем ответе, я искал возможность кэшировать арты, но никакой вразумительной информации я так и не нашел. И все бы ничего, можно было бы сделать динамическую подгрузку, но проблема в том что если попадается "жирный" арт 20000x15000 пикселей, память будет так же переполнена!

Прошу, помогите! Я уже голову себе сломал пытаясь это починить, алгоритм обработки приведен ниже.
P.s. Не смотря на то что я уже давно пишу на C# я мало что в нем понимаю, так как делаю это редко. Так что пишите пожалуйста по проще, что бы я понял.

Кликните здесь для просмотра всего текста

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
private void DebugImageCheck()
        {
            try
            {
                DirectoryInfo FileInfo = new DirectoryInfo(source_way);
                FileInfo[] Files = FileInfo.GetFiles("*");
                foreach (FileInfo file in Files)
                {
                    try //Создание панели
                    {
                        if (HMaxLocalImageWindow == 7) { y += 105; HMaxLocalImageWindow = 0; x = 0; FirstImageWindow = true; }
                        PicBox = new PictureBox();
                        if (FirstImageWindow) { PicBox.Left = 0; FirstImageWindow = false; HMaxLocalImageWindow++; }
                        else { x += 105; PicBox.Left = x; HMaxLocalImageWindow++; }
                        PicBox.Top = 20 + y;
                        PicBox.Height = 100;
                        PicBox.Width = 100;
                        PicBox.Visible = true;
                        string imageWay = Path.Combine(source_way, file.Name);
                        PicBox.Image = Image.FromFile(imageWay);
                        PicBox.SizeMode = PictureBoxSizeMode.StretchImage;
                        PicBox.Name = imageWay;
                        PicBox.Tag = file.Name;
                        this.PicBox.Click += new EventHandler(TegEditMethod);
 
                        Invoke((MethodInvoker)delegate //Добавление и размещение
                        {
                            ResultPanel.Controls.Add(PicBox);
                            pictureBox.Add(PicBox);
                        });
 
                        Image.FromFile(imageWay).Dispose();                       
 
                        //очистка
                        id++;
                        GC.Collect(1, GCCollectionMode.Forced);
                        GC.AddMemoryPressure(1);
                        GC.Collect();
                        GC.WaitForPendingFinalizers();
                        GC.Collect();
                        //PicBox.Image.Dispose();
                        k++;
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show(Convert.ToString(ex.Message));
                    }
                }
                ImageWorker.CancelAsync();
                Invoke((MethodInvoker)delegate
                {
                    ResultPanel.AutoScroll = true;
                    DebugBTN.Enabled = true;
                });
            }
            catch (Exception ex)
            {
                MessageBox.Show(Convert.ToString(ex.Message));
                ImageWorker.CancelAsync();
                Invoke((MethodInvoker)delegate
                {
                    ResultPanel.AutoScroll = true;
                    DebugBTN.Enabled = true;
                });
            }
        }
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
19.11.2018, 03:12
Ответы с готовыми решениями:

Переполнение памяти при работе с изображениями
Суть проблемы такова: Имеется код для отображения изображений на panel и дальнейшей работы с ними (добавление/удаление кастомных тегов,...

MemoryStream, переполнение памяти
Доброго времени суток, уважаемые! У меня возник вопрос следующего характера: Есть некоторый файл, сжатый через GZip (это для...

Переполнение
Здравствуйте! Подскажите, как сделать поведение при переполнении типа таким, как в С? То есть, например, byte b = 250 + 20; равнялось бы...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
19.11.2018, 03:12
Помогаю со студенческими работами здесь

Переполнение стека при рекурсии
У меня есть рекурсионная функция. Заменить ее чем либо другим не получается. Но при выполнении ее происходит переполнение стека процесса....

Переполнение стека при рекурсии
Код: public void FindEvenlyShadedAreas(Bitmap b, Color Color_Arr1, Color Color_Arr2, Point StartPoint, int difference) ...

Как изменить длину строки в памяти процесса (менять ник прямо в памяти игры)
Надо написать программку, способную менять ник в игре прямо в памяти этой игры. но возникла проблема с тем, что длина ника динамическая, и...

Переполнение в результате выполнения арифметической операции
При использовании типа int - ошибки нет, но некоторым переменным необходимо присвоить значения более 1000 000 000 Поэтому для...

Как можно вызвать переполнение буфера
Как можно вызвать переполнение буфера в C# 1.0 с использование .net 1.x ? Знаю, что можно, но как? На всех ресурсах пишут, что возможно...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
Программный отбор элементов справочника Номенклатура по группе 1С
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор под наименованию группы (на. . .
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
Программный отбор элементов справочника Сотрудники по перечислениям 1С
Maks 21.03.2026
Установка программного отбора элементов справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит предопределенное значение перечислений. Процедура. . .
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru