Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.69/16: Рейтинг темы: голосов - 16, средняя оценка - 4.69
1 / 1 / 1
Регистрация: 15.12.2010
Сообщений: 39
1

Программа "Не отвечает"

13.05.2011, 21:12. Показов 3285. Ответов 8
Метки нет (Все метки)

Программа выполняет сложные расчеты в одном методе. После 10секунд благополучного(по прогресбару) выполнения программа зависает секунд на 20(в заголовке "Не отвечает", ждущий курсор. кстати аналогично если я нажимаю просто на форму), а после отвисает. и прогресбар мгновенно заполняется на 100%. результаты ее работы все есть. очевидно что она просто долго думает. пробовал делать в новом потоке(смотрел тут https://www.cyberforum.ru/csha... ost1127690). результата ноль. метод на части разделить нельзя. можно ли сделать так чтобы не высвечивалось что она не отвечает? может я не до конца понимаю но по моему при установке больших по размеру программ или игр(или работа с архивацией) возникает та же самая ситуация: комп долго думает. Но при этом не пишет "Не отвечает".

Добавлено через 17 минут
Поток делал через BackgroundWorker
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.05.2011, 21:12
Ответы с готовыми решениями:

При автозапуске программы через реестр программа "не отвечает"
Доброго времени. Добавил свою программу в автозапуск в реестре. Программа сама скрытая (это такая...

Если ответ отличается от "да" или "нет" тогда программа должны писать "Ничего не понятно"
Программа работает так как мне нужно (оптимизация не интересует) есть только один момент где...

Дан массив строк: "red", "green", "black", "white", "blue". Запишите в файл элементы массива построчно (в новой строке)
пишу так но не помогает: static void Main(string args) { string...

За что отвечает команда "tmp"?
За что отвечает команда "tmp" в c#?

8
192 / 191 / 17
Регистрация: 07.11.2010
Сообщений: 477
13.05.2011, 21:14 2
Ну у меня расчеты занимали больше минуты времени. И именно тем методом, что ты указал я себе все сделал... Метод расчета на части не делил, просто вызывал его в фоновом потоке.
Может ты что-то пропустил в своем коде, не увидел в примере?
0
1 / 1 / 1
Регистрация: 15.12.2010
Сообщений: 39
13.05.2011, 21:55  [ТС] 3
Цитата Сообщение от Leax Посмотреть сообщение
Ну у меня расчеты занимали больше минуты времени. И именно тем методом, что ты указал я себе все сделал... Метод расчета на части не делил, просто вызывал его в фоновом потоке.
Может ты что-то пропустил в своем коде, не увидел в примере?
Возможно. сейчас еще попробую.

Добавлено через 14 минут
Полностью переделал. не весь цикл идет в отдельном потоке а каждая итерация.
как вернуть из потока файл битмап?
0
192 / 191 / 17
Регистрация: 07.11.2010
Сообщений: 477
13.05.2011, 22:12 4
Цитата Сообщение от rogovmaxim Посмотреть сообщение
как вернуть из потока файл битмап?
1) В конце расчета или в процессе?
2) Файл bmp или просто Bitmap?
0
1 / 1 / 1
Регистрация: 15.12.2010
Сообщений: 39
13.05.2011, 22:24  [ТС] 5
Цитата Сообщение от Leax Посмотреть сообщение
1) В конце расчета или в процессе?
2) Файл bmp или просто Bitmap?
В конце. bmp.
0
192 / 191 / 17
Регистрация: 07.11.2010
Сообщений: 477
13.05.2011, 22:59 6
Не понимаю проблемы... Нельзя по окончанию расчета открыть этот файл заново? Что происходит в процессе фонового расчета?
Очень трудно советовать не видя кода и не понимая постановки задачи
0
1 / 1 / 1
Регистрация: 15.12.2010
Сообщений: 39
13.05.2011, 23:13  [ТС] 7
Цитата Сообщение от Leax Посмотреть сообщение
Не понимаю проблемы... Нельзя по окончанию расчета открыть этот файл заново? Что происходит в процессе фонового расчета?
Очень трудно советовать не видя кода и не понимая постановки задачи
код длинный не думаю что комуто охото его разбирать. постановка задачи на данный момент такая: рисуется картинка Bitmap в отдельном потоке. ее нужно(нарисованную) вернуть из потока и сохранить. пытался сделать так(петррр где то писал как возвращать матрицу).
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
////////////////////
 
public Bitmap bmp3, bmp4;
public Thread Gen;
 
///////////////
 
                    if (s.ShowDialog() == DialogResult.OK)
                    {
                        string filename = s.FileName;
                        FileStream f;
                        for (int i = 0; i < numericUpDown1.Value; i++)
                        {
                            fr1.c = filename.Split(new char[] { '.' });
                            f = new FileStream(fr1.c[0] + Convert.ToString(fr1.kk) + ".bmp", FileMode.Create);
 
                            ThreadStart threadStart = delegate() { bmp4 = Generate(); }; //метод возвращает bmb3
                            Gen = new Thread(threadStart);
                            Gen.Start();
 
                            bmp4.Save(f, System.Drawing.Imaging.ImageFormat.Bmp);
                            fr1.kk++;
                            f.Flush();
                            f.Close();
                        }
                    }
Добавлено через 5 минут
Ошибка "ссылка на объект не указывает на экземпляр объекта" bmp4 = null
0
192 / 191 / 17
Регистрация: 07.11.2010
Сообщений: 477
13.05.2011, 23:25 8
Если используешь BackgroundWorker то зачем тебе использовать Thread?

Я б на твоем месте делал так (с помощью BackgroundWorker ). Объявил бы глобальную переменную Bitmap, а потом вызвал бы фоновый поток (как в примере из 1-го поста) в котором изменил бы значение этого Bitmap. Вроде должно сработать. С помощью Thread я не делал - не посоветую ничего
0
1 / 1 / 1
Регистрация: 15.12.2010
Сообщений: 39
13.05.2011, 23:47  [ТС] 9
Цитата Сообщение от Leax Посмотреть сообщение
Если используешь BackgroundWorker то зачем тебе использовать Thread?

Я б на твоем месте делал так (с помощью BackgroundWorker ). Объявил бы глобальную переменную Bitmap, а потом вызвал бы фоновый поток (как в примере из 1-го поста) в котором изменил бы значение этого Bitmap. Вроде должно сработать. С помощью Thread я не делал - не посоветую ничего
с BackgroundWorker не работает(( bmp3 = null. нужно как то доставать из потока его
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.05.2011, 23:47

Описать класс "поезд", содержащий поля "пункт назначения", "номер поезда", "время отправления"
Помогите пожалуйста с классом Описать класс «поезд», содержащий следующие закрытые поля:...

Программа-проводник: реализовать функции "Копировать" и "Вставить"
Заранее всем спасибо, вообщем есть программа, что-то типо проводника. Но из тех функций, что я...

Проблема при сравнении: "Оператор ">" не может применяться к операндам типа "Т" и "Т""
Добрый день , пишу сортировку , все делаю на основе Т , но вот в чем проблемма public class...

Построить иерархию классов "Студент", "преподаватель", "персона", "заведующий кафедрой"
Построить иерархию классов: Студент, преподаватель, персона, заведующий кафедрой 1) Разработать...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.