Форум программистов, компьютерный форум, киберфорум
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. Показов 4313. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
Как ИИ начал спорить и врать (возможно почуяв опасность для себя от индустрии - уход от электроники).
Hrethgir 04.08.2026
Недельный диалог, на фоне событий с НПЗ. Да, из спирта можно получать бензин, и это не сложно. Но потом в схеме я решил избавиться от насоса, при этом полностью сделав контроль подачи спирта в. . .
Термопринтер QR701
Argus19 03.08.2026
Термопринтер QR701 Купил два термопринтера QR701. На сэлф-тесте написано: Language: PC936 (GB18030). Что означает, что принтеры могут печатать только латиницу и китайские иероглифы. Так же. . .
Создание формы заимствованного документа
Maks 03.08.2026
Задача: Необходимо создать собственную форму заимствованного документа. На форме должен быть реквизит "Покупатель", а также табличная часть со следующими реквизитами: - Расчетный счет покупателя. . .
Задача предоставления скидок покупателям
Maks 03.08.2026
Задача: В документе "Продажи" необходимо реализовать функционал предоставления скидок покупателям. Скидка должна автоматически рассчитываться и подставляться в соответствующее поле при выборе. . .
Почему SEO не начинается с ключевых слов: что проверить до написания текстов
Neotwalker 01.08.2026
Когда владельцу сайта предлагают заняться SEO, первым шагом часто становится сбор запросов и написание текстов. Логика кажется понятной: 1. Находим ключевые слова. 2. Добавляем их на. . .
Знание — сила: Доктрина интенциональности знаний, углубление в формулу
Hrethgir 01.08.2026
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11957&stc=1&d=1785567302 Знаменитый афоризм Фрэнсиса Бэкона «Знание — сила» (Scientia potentia est) в массовой культуре принято понимать. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru