Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
0 / 0 / 0
Регистрация: 20.09.2018
Сообщений: 6

Splash Screen при нажатии на button

16.06.2019, 12:05. Показов 781. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Суть действия: Нажимаю на кнопку --> Начинается обработка данных/Параллельно появляется форма Splash--> По окончании процесса форма Splash закрывается.
У меня получилось создать форму и запустить ее при нажатии кнопки, но она стопорит обработку данных. Как запустить два процесса одновременно(в разные потоки), чтобы не мешали друг другу?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
16.06.2019, 12:05
Ответы с готовыми решениями:

Splash-screen
Добрый день! Нужна помощь в таком вопросе: при запуске программы производится чтение из базы данных. В этот момент нужно отобразить...

Splash screen
Всем привет. Только начал изучать Qt. Хочу сделать приложение, которое при выполнении показывает splash screen на 5 секунд, а после...

Как создать Splash screen?
Подскажите пожалуйста, как сделать, чтобы перед загрузкой главной формы секунды три провисела Splash-форма с картинкой? (Windows Forms)....

2
490 / 286 / 129
Регистрация: 30.10.2018
Сообщений: 1,309
16.06.2019, 12:10
Korazon, вот тебе пример, вычисления факториала, при том что программа не зависает:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
async void Button1_Click(object sender, EventArgs e)
        {
            await Task.Run(() => Factorial());
        }
        void Factorial()
        {
            DateTime start = DateTime.Now;
            StreamWriter streamWriter = new StreamWriter("kitsoRik.txt");
            BigInteger b = 1, max = BigInteger.Parse("1000000000000000");
            for (BigInteger i = 1; i <= max; i++)
            {
                TimeSpan now = DateTime.Now - start;
                label1.BeginInvoke(new Action(() =>  label1.Text = i.ToString()));
                time.BeginInvoke(new Action(() => time.Text = $"{now.Hours}:{now.Minutes}:{now.Seconds}:{now.Milliseconds}"));
                b *= i;
                streamWriter.WriteLine($"{i}) = {b}");
            }
            streamWriter.Close();
        }
вызов await Task.Run(...) говорит компилятору что нужно делать это в другой потоке, при этом что бы добится к данным главного потока (потока программы) нужно вызывать действия через BeginInvoke (либо Invoke но этот будет по медленее)

Метод который будет вызывать await должен быть позначен как async
0
0 / 0 / 0
Регистрация: 20.09.2018
Сообщений: 6
16.06.2019, 12:49  [ТС]
Сложно для моего ума Для наглядности покажу код
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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
public void Update_Click(object sender, EventArgs e)
        {            
            string str;
            using (var dialog = new FolderBrowserDialog())
                if (dialog.ShowDialog() == DialogResult.OK)
                    str = dialog.SelectedPath;
            File.Delete("C:\\Users\\Dell\\Desktop\\C# stego\\howto_image_hash\\Encode\\imHash.txt");
            string[] files = Directory.GetFiles(@"C: \Users\Dell\Desktop\C# stego\howto_image_hash\image", "*.jpg", SearchOption.AllDirectories);
            Bitmap[] bmpArr = new Bitmap[imGEO.Length];
            //SplashUpdate spscr = new SplashUpdate();
            //spscr.ShowDialog();
           for (int i = 0; i < bmpArr.Length; i++)
            {
                bmpArr[i] = new Bitmap(imGEO[i]);
            }
 
            //////////////////////////////////////////////////////
 
            for (int i = 0; i < bmpArr.Length; i++)
            {
 
                Bitmap shrunk_bm = ScaleTo(bmpArr[i], 8, 8, InterpolationMode.High);
                Bitmap grayscale_bm = ToMonochrome(shrunk_bm);//из цветного в градации серого
                Bitmap bmpMat = new Bitmap(grayscale_bm);
                Color[,] color = new Color[bmpMat.Width, bmpMat.Height];
 
                int count = 0;
                string[] lll = new string[64];
                int[,] colorS = new int[bmpMat.Width, bmpMat.Height];
                for (int y = 0; y < bmpMat.Height; y++)
                {
 
                    for (int x = 0; x < bmpMat.Width; x++)
                    {
                        color[x, y] = bmpMat.GetPixel(x, y);
                        colorS[x, y] = int.Parse(color[x, y].B.ToString("G"));
                        lll[count++] = color[x, y].B.ToString("G");
 
                    }
 
                }
 
 
                int summ = 0;
                for (int t = 0; t < lll.Length; t++)
                {
                    summ += int.Parse(lll[t]);
                }
                int mid = summ / lll.Length;
 
                for (int y = 0; y < bmpMat.Height; y++)
                {
 
                    for (int x = 0; x < bmpMat.Width; x++)
                    {
                        if (colorS[x, y] > mid)
                        {
                            colorS[x, y] = 1;
                        }
                        else if (colorS[x, y] <= mid)
                        {
                            colorS[x, y] = 0;
                        }
 
                    }
 
                }
                StreamWriter lts = new StreamWriter("C:\\Users\\Dell\\Desktop\\C# stego\\howto_image_hash\\Encode\\log.txt");
                for (int y = 0; y < bmpMat.Height; y++)
                {
                    for (int x = 0; x < bmpMat.Width; x++)
                    {
                        lts.Write(colorS[x, y] + " ");
                    }
                    lts.WriteLine();
                }
                lts.Close();
 
 
                string pixel_s = "";
                for (int y = 0; y < bmpMat.Height; y++)
                {
 
                    for (int x = 0; x < bmpMat.Width; x++)
                    {
 
                        pixel_s = pixel_s + Convert.ToString(colorS[x, y]);
 
                    }
 
                }
                for (int x = 0; x < bmpMat.Height; x++)
                {
 
                    for (int y = 0; y < bmpMat.Width; y++)
                    {
 
                        pixel_s = pixel_s + Convert.ToString(colorS[x, y]);
 
                    }
 
                }
                
                imHash[i] = GetMd5Hash(pixel_s);
                File.AppendAllText("C:\\Users\\Dell\\Desktop\\C# stego\\howto_image_hash\\Encode\\imHash.txt", imHash[i] + Environment.NewLine);
            }
            //////////////////////////////////////
 
        }
Это блок где при нажатии кнопки происходит обработка данных. Но т.к. процесс длительный и смотреть на окно диагностики(дабы понять когда закончится обработка) мягко говоря не комильфо, я пытаюсь добавить Splash Screen.
Создал отдельно форму для него, но вот запустить Splash Screen параллельно Update_Click не получается.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
16.06.2019, 12:49
Помогаю со студенческими работами здесь

Splash screen неправильной формы
Здравствуйте, проблема следущая: надо сделать начальный экран системы(splash screen) который представляет собой картинку, проблема в том...

Splash screen и progressbar на нём?
Возможно ли создать splash screen и progressbar на нём при первом запуске проги? splash screen - поставить легко можно через создание темы,...

Создание button без заднего фона, и подключение коротких звуков при нажатии button
Т.к. я только начинающий юзер C#, хотел бы спросить, если кто сможет подсказать, как убрать задний фон на баттоне, что б он вливался в фон...

При нажатии на Button каждый раз создается новый компонент (button/label/textbox)
Как реализовать?

Splash screen, удаление строк в TStringList
При старте программы вылазит SplashScreen, проверяет файлы на существование. Пути к файлам находятся в TStringList, если файл не найден,...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Загрузка PNG-файла с альфа-каналом с помощью библиотеки SDL3_image на Android
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru