概要
・Sound Playerを使ったコードでエラーが発生します。
・1周目は問題なく動きます。
・2周目はエラーが生じます。
・サウンドデータを別クラスからstatic参照した場合にのみ起こるようです。
→なぜ「2周目」かつ「staticを使った場合」のみエラーが発生するの分かりません!わかる方いらっしゃいました教えてほしいです><
コード
C#
1using System; 2using System.Windows.Forms; 3using System.Media; 4using System.IO; 5 6namespace WindowsFormsApp3 7{ 8 //サウンド情報を保持するクラス 9 public class Sound 10 { 11 public static Stream alarmA = WindowsFormsApp3.Properties.Resources.alarmA; 12 } 13 14 public partial class Form1 : Form 15 { 16 //コンストラクタ 17 public Form1() 18 { 19 InitializeComponent(); 20 } 21 22 //テスト回数カウンター 23 int count; 24 25 //実行時起動 26 private void Form1_Load(object sender, EventArgs e) 27 { 28 doTest();//1回目はエラーなし 29 doTest();//2回目はエラーあり 30 } 31 32 //テストメソッド 33 private void doTest() 34 { 35 count++;//カウンター更新 36 37 SoundPlayer soundNomal = new SoundPlayer(Sound.alarmA); 38 try 39 { 40 soundNomal.Play(); 41 soundNomal.Stop(); 42 Console.WriteLine(count + "周目:問題なし"); 43 } 44 catch(Exception e) 45 { 46 Console.WriteLine(count + "周目:エラー"); 47 Console.WriteLine(e.StackTrace); 48 } 49 } 50 } 51}
コンソール
1周目:問題なし
'WindowsFormsApp3.exe' (CLR v4.0.30319: WindowsFormsApp3.exe): 'C:\WINDOWS\Microsoft.Net\assembly\GAC_MSIL\mscorlib.resources\v4.0_4.0.0.0_ja_b77a5c561934e089\mscorlib.resources.dll' が読み込まれました。モジュールがシンボルなしでビルドされました。
2周目:エラー
場所 System.Media.SoundPlayer.ValidateSoundData(Byte[] data)
場所 System.Media.SoundPlayer.LoadAndPlay(Int32 flags)
場所 System.Media.SoundPlayer.Play()
場所 WindowsFormsApp3.Form1.doTest() 場所 d:\ユーザー\visual studio 2017\Projects\WindowsFormsApp3\WindowsFormsApp3\Form1.cs:行 40
プログラム '[8740] WindowsFormsApp3.exe' はコード 0 (0x0) で終了しました。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/04/20 23:47