سؤال

أنا باستخدام هذا الرمز للعب ملف WAV من الموارد و يلعب الصوت بشكل صحيح, ولكن بعد ذلك الحصول قصير انفجار ساكنة بعد أنه يلعب (حوالي 1/2 الثانية):

//System.Media.SystemSounds.Beep.Play();
SoundPlayer sndPlayer = new SoundPlayer();
sndPlayer.Stream = Resources.Notify;
sndPlayer.Play();

لو ضافه System.Media.SystemSounds.Beep.Play() خط فوق ، ثم تنبيه إعلام الصوت من الموارد على حد سواء تلعب بشكل صحيح, و لا ثابت.لقد حاولت بضعة أشكال مختلفة من رمز أعلاه, و دائما الحصول على الساكنة.حاولت جعل جميع المتغيرات ثابتة ، في حال كان هناك شيء ذات الصلة في وقت مبكر جمع القمامة ، ولكن هذا لم يساعد.

ملف WAV واحد فقط نسخت من c:\WINDOWS\Media\ding.wav (على ويندوز XP) وأنه يلعب بشكل جيد في ويندوز ميديا بلاير.أيضا, إذا كنت تستخدم جديدة SoundPlayer("c:\WINDOWS\Media\ding.wav"), أنه يلعب بشكل صحيح من الملف.

أتصور أنها قد تفعل شيئا مع UnmanagedMemoryStream أن Resources.Notify ربما أنا بحاجة إلى تحميله في إدارتها تيار أولا ؟ أعرف أني كنت أعاني من مشاكل مع ملفات PNG إذا كنت لا تستخدم new Bitmap(Resource.MyPNG) ومحاولة استخدام Resource.MyPNG مباشرة بدلا لذا ربما شيء مماثل مع الرعايا الموارد ؟

تحديث : اعتقدت في البداية أنه كان يحدث في كل مرة الصوت لعبت, ولكن الآن يبدو أنه لا يحدث إلا في أول مرة ألعب الصوت في التطبيق.لذلك ربما بعض التهيئة يجب القيام به ؟

كما أنني حاولت هذه المسألة نفسها:

SoundPlayer sndPlayer = new SoundPlayer(Resources.Notify);
sndPlayer.Play(); 
هل كانت مفيدة؟

المحلول 2

كان مجرد مشكلة على جهاز كمبيوتر واحد.لا أحسبها أبدا، ولا يبدو أن التطبيقات الأخرى لديها هذه المشكلة، ولكن لا يستحق وقتي إلا إذا تم اختبارها فقط في 1 كمبيوتر شخصي) حتى الآن.سوف تبلغ عن إجابة أفضل إذا حصلت على واحدة.

نصائح أخرى

هذا هو تطبيق داخلي أن مرض التصلب العصبي المتعدد الاستخدام بلدي.الصوت.تلعب(), انظر كيف مثيل SoundPlayer فئة الاستفادة من طاقتها منشئ يأخذ أسم دليل كما هو مبين أدناه أو تيار:

http://msdn.microsoft.com/en-us/library/system.media.soundplayer.aspx

public void Play(string location, AudioPlayMode playMode)
{
    this.ValidateAudioPlayModeEnum(playMode, "playMode");
    SoundPlayer sound = new SoundPlayer(this.ValidateFilename(location));
    this.Play(sound, playMode);
}

يمكنك محاولة تمرير في تيار عند إنشاء مثيل من SoundPlayer?

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top