HosseinProgrammer
سه شنبه 20 شهریور 1386, 16:06 عصر
سلام.
به کد زیر دقت کنید:
System.IO.Stream[] Array = new System.IO.Stream[5];
Array[0] = AudioPlayer.Properties.Resources._10;
Array[1] = AudioPlayer.Properties.Resources._4;
Array[2] = AudioPlayer.Properties.Resources._7;
Array[3] = AudioPlayer.Properties.Resources._8;
Array[4] = AudioPlayer.Properties.Resources._9;
System.Media.SoundPlayer Player1 = new System.Media.SoundPlayer();
for (int i = 0; i < 2; i++)
{
Player1.Stream = Array[1];
MessageBox.Show("1");
Player1.PlaySync();
Player1.Stream = Array[4];
Player1.PlaySync();
MessageBox.Show("2");
}
در دور دوم حلقه برنامه با چنین خطایی روبرو میشه: The wave header is corrupt.
وقتی بررسی کردم دیدم که در شرایط زیر این خطا اتفاق میوفته:
فایل های صوتی در Resource در یک آرایه ذخیره بشن و اگر از یک خانه ی آرایه بیش از یکبار استفاده بشه، چنین مشکلی اتفاق میوفته. منظورم از بیش از یکبار، اینه که حتما بعد از
Player1.Stream = Array[1] ، آدرس Player1.Stream تغییر کنه. یعنی اگه
Player1.Stream = Array[4] در حلقه نباشه، مشکلی پیش نمیاد.
به عبارتی حتما حداقل یکبار آدرس تغییر کنه وبعدش آدرس تکراری داده بشه.
کد زیر هم مشکلی نداره: (وقتی که از آرایه استفاده نشه)
for (int i = 0; i < 2; i++)
{
Player1.Stream = AudioPlayer.Properties.Resources._10;
MessageBox.Show("1");
Player1.PlaySync();
Player1.Stream = AudioPlayer.Properties.Resources._9;
Player1.PlaySync();
MessageBox.Show("2");
}
دوستان ممنون میشم اگه جواب بدید. اگه جایی ابهامی وجود داره، بفرمایید تا بیشتر توضیح بدم. ضمنا اگه در مورد نوع Stream هم یه کم توضیح بدید ممنون میشم. توی سایت جستجو کردم چیزی دستگیرم نشد.
به کد زیر دقت کنید:
System.IO.Stream[] Array = new System.IO.Stream[5];
Array[0] = AudioPlayer.Properties.Resources._10;
Array[1] = AudioPlayer.Properties.Resources._4;
Array[2] = AudioPlayer.Properties.Resources._7;
Array[3] = AudioPlayer.Properties.Resources._8;
Array[4] = AudioPlayer.Properties.Resources._9;
System.Media.SoundPlayer Player1 = new System.Media.SoundPlayer();
for (int i = 0; i < 2; i++)
{
Player1.Stream = Array[1];
MessageBox.Show("1");
Player1.PlaySync();
Player1.Stream = Array[4];
Player1.PlaySync();
MessageBox.Show("2");
}
در دور دوم حلقه برنامه با چنین خطایی روبرو میشه: The wave header is corrupt.
وقتی بررسی کردم دیدم که در شرایط زیر این خطا اتفاق میوفته:
فایل های صوتی در Resource در یک آرایه ذخیره بشن و اگر از یک خانه ی آرایه بیش از یکبار استفاده بشه، چنین مشکلی اتفاق میوفته. منظورم از بیش از یکبار، اینه که حتما بعد از
Player1.Stream = Array[1] ، آدرس Player1.Stream تغییر کنه. یعنی اگه
Player1.Stream = Array[4] در حلقه نباشه، مشکلی پیش نمیاد.
به عبارتی حتما حداقل یکبار آدرس تغییر کنه وبعدش آدرس تکراری داده بشه.
کد زیر هم مشکلی نداره: (وقتی که از آرایه استفاده نشه)
for (int i = 0; i < 2; i++)
{
Player1.Stream = AudioPlayer.Properties.Resources._10;
MessageBox.Show("1");
Player1.PlaySync();
Player1.Stream = AudioPlayer.Properties.Resources._9;
Player1.PlaySync();
MessageBox.Show("2");
}
دوستان ممنون میشم اگه جواب بدید. اگه جایی ابهامی وجود داره، بفرمایید تا بیشتر توضیح بدم. ضمنا اگه در مورد نوع Stream هم یه کم توضیح بدید ممنون میشم. توی سایت جستجو کردم چیزی دستگیرم نشد.