2014-02-25 2 views
1

Я пишу консольное приложение на C#, и я хочу воспроизводить звук при непрерывном отображении текстов. Это то, что я сделал:Воспроизведение звуков на консоли - C#

static SoundPlayer typewriter = new SoundPlayer("typewriter"); 
static public void print(string str, int delay) 
    { 
     Thread skipThread = new Thread(skipText); 
     typewriter.PlayLooping(); 
     textgap = delay; 
     foreach (char c in str) 
     { 
      Console.Write(c); 
      if (textgap != 0) 
       Thread.Sleep(textgap); 

     } 
     typewriter.Stop(); 

    } 

typewriter.wav импортируется в мой проект рядом с .cs файлов и я выбрал copy always. Когда я запускаю этот код, появляется ошибка при запуске воспроизведения звука. Please be sure a sound file exists at the specified location. Что здесь не так?

EDIT: Изменил мой код следующим ответом Кевина Дж.

static SoundPlayer typewritter; 

    public static void Load() 
    { 
     Assembly assembly; 
     assembly = Assembly.GetExecutingAssembly(); 
     typewritter = new SoundPlayer(assembly.GetManifestResourceStream 
      ("typewriter")); 
    } 

Я должен также уточнено использовать путь Environment.CurruntDirectory + "typewriter", но ничего не меняется.

+0

Он помещает файл в ту же папку, что и ваш исполняемый файл? –

+0

@ DStanley Да, это так. – user26830

+0

Если вы не импортировали WAV-файл в качестве ресурса, вам нужно указать точный путь вашего .wav-файла для SoundPlayer. т. е. «SoundPlayer player = новый SoundPlayer (« C: \\ bass.wav »)). В приведенном выше коде отсутствует полный путь. – Kevin

ответ

2

Разобрался проблема: мне просто нужно было установить SoundLocation свойства экземпляра SoundPlayer:

SoundPlayer typewriter = new SoundPlayer(); 
typewriter.SoundLocation = Environment.CurrentDirectory + "/typewriter.wav"; 
1

Вот что-то, что может помочь вам (обратите внимание, что этот код предназначен для приложения winforms, но вы должны иметь возможность конвертировать в консольное приложение. Просто изучите код, чтобы увидеть, как он работает). В основном вы будете добавление WAV-файла в качестве «ресурса» в вашу программу. Затем, ваша программа может получить доступ к файлу .wav и играть:

enter image description here

using System.Reflection; 
using System.IO; 
using System.Resources; 
using System.Media; 
using System.Diagnostics; 



namespace Yournamespace 
{ 
    public partial class Form2 : Form 
    { 
     public Form2() 
     { 
      InitializeComponent(); 
     } 

     private void Form2_Load(object sender, EventArgs e) 
     { 
      Assembly assembly; 
      Stream soundStream; 
      SoundPlayer sp; 
      assembly = Assembly.GetExecutingAssembly(); 
      sp = new SoundPlayer(assembly.GetManifestResourceStream 
       ("Yournamespace.Dreamer.wav")); 
      sp.Play(); 
     } 
    } 
} 
+0

Спасибо за ваш ответ, когда я это, по крайней мере, нет ошибок, но воспроизводимый звук - это всего лишь системный звуковой сигнал, не связанный с моим оригинальным звуком. – user26830

+0

Опубликуйте свой новый код в исходном вопросе в качестве редактирования и давайте посмотрим, что у вас есть. – Kevin

+0

Изменил мое сообщение в соответствии с вашими комментариями. – user26830

Смежные вопросы