Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.86/21: Рейтинг темы: голосов - 21, средняя оценка - 4.86
 Аватар для Cdelphi78
140 / 74 / 18
Регистрация: 21.02.2014
Сообщений: 3,444

MessageBox выскакивает 3 раза

02.09.2015, 13:51. Показов 4410. Ответов 20

Студворк — интернет-сервис помощи студентам
Здавствуйте!Пишу свой вариант диктофона, использую библиотечку Naudio?Никак не могу понять как она работает, в итоге когда ставлю условие что в микрофон ничо не слышно MessageBox выскакивает 3 раза. К тому же если оставить
waveIn = null; writer = null; программа крашиться с необработанным исключением.
Кликните здесь для просмотра всего текста
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
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Text;
using System.Windows.Forms;
using System.IO;
using NAudio.Wave;
using NAudio.FileFormats;
using NAudio.CoreAudioApi;
using NAudio;
 
namespace SoundRecorder
{
    public partial class Form1 : Form
    {
        // WaveIn - поток для записи
        WaveIn waveIn;
        //Класс для записи в файл
        WaveFileWriter writer;
        //Имя файла для записи
        string outputFilename = "test.wav";
        float level;
 
        public Form1()
        {
            InitializeComponent();
        }
 
        //Получение данных из входного буфера 
        void waveIn_DataAvailable(object sender, WaveInEventArgs e)
        {
          
 
              
 
          if (level >= trackBar1.Value)
            {
 
 
                //подсчет децибелов
 
                for (int index = 0; index < e.BytesRecorded; index += 2)
                {
                    short sample = (short)((e.Buffer[index + 1] << 8) | e.Buffer[index + 0]);
 
                    float amplitude = sample / 32768f;
                    level = Math.Abs(amplitude); // от 0 до 1
                    level = level * 100;
                    textBox1.Text = Math.Round(level).ToString();
 
                }
 
               //Записываем данные из буфера в файл
                writer.WriteData(e.Buffer, 0, e.BytesRecorded);
 
            }
 
            else
            {
 
                MessageBox.Show("Звука нет, говорите громче");
                StopRecording();
            }
             
                   
                
           
        }
 
        //Завершаем запись
        void StopRecording()
        {
           waveIn.StopRecording();
        }
 
       
 
        //Окончание записи
        private void waveIn_RecordingStopped(object sender, EventArgs e)
        {
           
                waveIn.Dispose();
                //waveIn = null;
                writer.Close();
               // writer = null;
            
        }
 
 
        private void button1_Click(object sender, EventArgs e)
        {
               
             
        
            MessageBox.Show("Start Recording");
            waveIn = new WaveIn();
            //Дефолтное устройство для записи (если оно имеется)
            //встроенный микрофон ноутбука имеет номер 0
            waveIn.DeviceNumber = 0;
           //Прикрепляем к событию DataAvailable обработчик, возникающий при наличии записываемых данных
            waveIn.DataAvailable += waveIn_DataAvailable;
            //Прикрепляем обработчик завершения записи
            waveIn.RecordingStopped += waveIn_RecordingStopped;
 
            //Формат wav-файла - принимает параметры - частоту дискретизации и количество каналов(здесь mono)
            waveIn.WaveFormat = new WaveFormat(8000, 1);
 
            //Инициализируем объект WaveFileWriter
            writer = new WaveFileWriter(outputFilename, waveIn.WaveFormat);
            
            //Начало записи
            waveIn.StartRecording();
 
            
           
 
        }
 
       
 
        private void Form1_Load(object sender, EventArgs e)
        {
 
        }
 
        private void button2_Click(object sender, EventArgs e)
        {
 
 
         
           if (waveIn != null)
            {
               // var sfd = new SaveFileDialog();
               // sfd.Filter = "wav files (*.wav)|*.wav|All files|*.*";
                
               // if (sfd.ShowDialog() == DialogResult.OK)
               // {
                     //сохранить файл
 
               // }
                
                StopRecording();
               
            }
        }
 
        private void trackBar1_Scroll(object sender, EventArgs e)
        {
            label5.Text = trackBar1.Value.ToString(); 
 
        }
 
        private void button3_Click(object sender, EventArgs e)
        {
            
        }
 
       
    }
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
02.09.2015, 13:51
Ответы с готовыми решениями:

MessageBox выскакивает 4 раза
foreach (DataGridViewRow rowd in dataGridView2.Rows) { foreach (DataGridViewCell cell in rowd.Cells) ...

Два раза открывается MessageBox.Show после второго вызова MessageBox
Здравствуйте! Подскажите пожалуйста... Мне вот надо было сделать диалоговое окно для ввода данных для бегущей строки. Кроме этого,...

MessageBox выскакивает без остановки, как сделать одно срабатывание?
Делаю игру, нужно что бы при определённом значение переменной появлялось сообщение, получилось, но оно выскакивает без остановок, а мне...

20
 Аватар для Cdelphi78
140 / 74 / 18
Регистрация: 21.02.2014
Сообщений: 3,444
05.09.2015, 16:58  [ТС]
Студворк — интернет-сервис помощи студентам
подсказали бы в какую сторону копать)?

Добавлено через 2 минуты
Дак тут даже не С#, тут работа со звуком, это вообще виндовое API изучать надо. А по naudio документация была бы нормальная на русском.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
05.09.2015, 16:58

Почему-то 2 раза появляется MessageBox
Всем привет, 2 раза появляется диалог в чём беда? if(exito == 0) { MessageBox.Show(&quot;не подобран,...

MessageBox появляется 2 раза вместо 1 при CheckBox1_CheckedChanged
Вот код, а вопрос в заголовке private void checkBox1_CheckedChanged(object sender, EventArgs e) { if...

Messagebox, появляется 2 раза при закрытии формы!?
Закрытие первой формы private void Authorization_FormClosing(object sender, FormClosingEventArgs e) { ...

Уже два раза синий экран выскакивает :(
без понятии что делать , написано было прикрепить файл , если будут проблемы с Синими Экраном ... что я и сделал За ранние спасибо !!!

При загрузке Dll MessageBox срабатывает 2 раза
создаю такую тестевую dll #include &lt;windows.h&gt; BOOL WINAPI DllMain (HANDLE hInst,DWORD dwReason, LPVOID IpReserved) { ...


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

Или воспользуйтесь поиском по форуму:
21
Ответ Создать тему
Новые блоги и статьи
Nekobox - outbounds[0].transport: unknown transport type: raw
damix 01.10.2026
Фикс ошибки Правым кликом по серверу -> отладочная информация -> edit Заменить "net": "raw", на "net": "tcp", Нажать кнопку reload.
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru