Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/25: Рейтинг темы: голосов - 25, средняя оценка - 4.56
0 / 0 / 0
Регистрация: 06.12.2018
Сообщений: 69

Кнопка пауза

28.04.2020, 22:46. Показов 5372. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Как сделать кнопку паузы. Я сделал, но она не работает подскажите в чем причина или как поменять её может.
Вложения
Тип файла: rar потоки3.rar (37.8 Кб, 20 просмотров)
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
28.04.2020, 22:46
Ответы с готовыми решениями:

Пауза анимации
Ситуация такова, моя программа выводит в pictureBox последовательность картинок, которые в результате создают анимацию. Мне нужно сделать...

Пауза в приложении
Ребят подскажите каким образом можно реализовать паузу в игре? Скажем при нажатии на пробел появляется меню паузы с возможностью закрытия...

Webbrowser пауза
Нужно сделать паузу после некоторых действий в Webbrowser. Если ее сделать через приостановку потока Thread.Sleep() - то вместе с ним...

8
nd2
3438 / 2817 / 1249
Регистрация: 29.01.2016
Сообщений: 9,427
29.04.2020, 04:28
Регистр, текста кнопки, учитывай.
0
0 / 0 / 0
Регистрация: 06.12.2018
Сообщений: 69
29.04.2020, 11:43  [ТС]
не помогло, также ничего не делает
0
nd2
3438 / 2817 / 1249
Регистрация: 29.01.2016
Сообщений: 9,427
29.04.2020, 18:40
Цитата Сообщение от faer322 Посмотреть сообщение
также ничего не делает
А что у тебя в коде написано, чтобы пауза была?
0
0 / 0 / 0
Регистрация: 06.12.2018
Сообщений: 69
29.04.2020, 19:00  [ТС]
думал если перекрывается поток, подсчет должен остановиться
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
private void pauseAsyncButton_Click(object sender, EventArgs e)
        {
            if (pauseAsyncButton.Text == "пауза")
            {
                pauseAsyncButton.Text = "продолжить";
                manual.Reset();
            }
            else
            {
                pauseAsyncButton.Text = "пауза";
                manual.Set();               
            }
        }
0
nd2
3438 / 2817 / 1249
Регистрация: 29.01.2016
Сообщений: 9,427
29.04.2020, 19:02
И что этот manual.Reset() делает?
0
0 / 0 / 0
Регистрация: 06.12.2018
Сообщений: 69
29.04.2020, 19:20  [ТС]
блокирует поток же, нет?
0
 Аватар для xellan24rus
364 / 296 / 55
Регистрация: 08.04.2020
Сообщений: 1,175
29.04.2020, 20:47
Abort - стоп потока
0
nd2
3438 / 2817 / 1249
Регистрация: 29.01.2016
Сообщений: 9,427
29.04.2020, 22:20
Лучший ответ Сообщение было отмечено faer322 как решение

Решение

Кликните здесь для просмотра всего текста
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
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
using System;
using System.ComponentModel;
using System.IO;
using System.Threading;
using System.Windows.Forms;
 
namespace потоки3
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            backgroundWorker1.WorkerReportsProgress = true;
            backgroundWorker1.WorkerSupportsCancellation = true;
        }
 
        private string Path;
        private double Desired;
        private double Nodesired;
        private double Ratio;
        private ManualResetEvent manual = new ManualResetEvent(false);
 
        bool pause = false;
        private void startAsyncButton_Click(object sender, EventArgs e)//старт
        {
            if (backgroundWorker1.IsBusy != true)
            {
                backgroundWorker1.RunWorkerAsync();
            }
        }
 
        private void cancelAsyncButton_Click(object sender, EventArgs e)//отмена
        {
            if (backgroundWorker1.WorkerSupportsCancellation == true)
            {
                backgroundWorker1.CancelAsync();
                Desired = 0;
                Nodesired = 0;
                Ratio = 0;
            }
        }
    private void pauseAsyncButton_Click(object sender, EventArgs e)//пауза
        {
            if (pauseAsyncButton.Text == "пауза")
            {
                pauseAsyncButton.Text = "продолжить";
                pause = true;
                manual.Reset();
            }
            else
            {
                pauseAsyncButton.Text = "пауза";
                pause = false;
                manual.Set();
            }
        }
        private void OpenFile_Click(object sender, EventArgs e)//открыть файл
        {           
            if (openFileDialog1.ShowDialog() == DialogResult.OK)
            {
                Path = openFileDialog1.FileName;                
            }
        }
        
        private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
        {
            BackgroundWorker worker = sender as BackgroundWorker;            
           // manual.WaitOne();
            StreamReader reader = new StreamReader(Path);
            string content = reader.ReadToEnd();
            reader.Close();            
            if (textBox1.Text.Length > 0)
            {                
                char symbol = textBox1.Text[0];
                if (worker.CancellationPending == true)
                    {
                        e.Cancel = true;
                        return;
                    }
                foreach (char c in content)
                {
                    if (worker.CancellationPending == true)
                    {
                        e.Cancel = true;
                        return;
                    }
                    else
                    {
                        if (pause == true)
                            manual.WaitOne();
                       
                        
 
                        if (c == symbol)
                        {
                            Desired++;
                            this.Invoke((MethodInvoker)delegate ()
                            {
                                textBox2.Text = Desired.ToString();
                            });
                        }
                        else
                        {
                            Nodesired++;
                            this.Invoke((MethodInvoker)delegate ()
                            {
                                textBox3.Text = Nodesired.ToString();
                            });
                        }
                        Ratio = Desired / Nodesired;
                        this.Invoke((MethodInvoker)delegate ()
                        {
                            textBox4.Text = Ratio.ToString();
                        });
                        Thread.Sleep(100);
                    }                                 
                }                             
                backgroundWorker1.ReportProgress(100);
            }           
        }
        private void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e)
        {
            progressBar1.Value = e.ProgressPercentage;
        }
 
        private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
        {
            if (e.Cancelled == true)
            {
                MessageBox.Show("Отмена"); 
            }
            else if (e.Error != null)
            {
                MessageBox.Show("Ошибка:" + e.Error.Message);
            }
            else
            {
                MessageBox.Show("Выполнено");
            }    
              
        }
    }
}
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
29.04.2020, 22:20
Помогаю со студенческими работами здесь

Пауза всей программы
Привет всем пользователям форума. У меня есть проект программы, но в нем нужно сделать кнопку паузы и старта, кто поможет?

Пауза для таймера
Работаю с 2 кнопками : Начать работу и Пауза. Результат вывожу в label, хотя думаю, что стоит с datetimepicker поколдовать :) В итоге после...

Пауза/продолжение работы цикла
О,гуру программирования,окажите помощь,пожалуйста. using System; using System.Collections.Generic; using System.ComponentModel; ...

Во общем ситуация такая. Есть форма на форме кнопка. Кнопка запускает метод. После запуска метода форма умирае
Во общем ситуация такая. Есть форма на форме кнопка. Кнопка запускает метод. После запуска метода форма умирает. Как решить? В голове...

Кнопка button1 должна закрывалась после последнего введённого массива, после чего должна открыться кнопка button2
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Переходник 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),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru