.NET Asenkron Sound Player Ornek

Sound Player Tutorial

Sound Player Tutorial

Basit bir windows uygulaması , System.Media kütüphanesi altindaki SoundPlayer sınıfının dosyalari çalma işlemi için tasarlandi , ve büyük wav dosyalarina karşında asenkron çalışmaktadır.

C# kodlarimiz :

  1. using System;
  2. using System.ComponentModel;
  3. using System.Windows.Forms;
  4.  
  5. namespace XSoundPlayer
  6. {
  7. public partial class Form1 : Form
  8. {
  9. string secilenDosya;
  10. public Form1()
  11. {
  12. InitializeComponent();
  13. }
  14.  
  15. private void btnGozAt_Click(object sender, EventArgs e)
  16. {
  17. OpenFileDialog dosyaPenceresi = new OpenFileDialog();
  18. dosyaPenceresi.InitialDirectory = "C:\\";
  19. dosyaPenceresi.Filter = "WAV Dosyalari | *.wav";
  20.  
  21. if (dosyaPenceresi.ShowDialog() == DialogResult.OK)
  22. {
  23. secilenDosya = dosyaPenceresi.FileName;
  24. lblDosya.Text = string.Format("Dosya : {0}", secilenDosya);
  25. }
  26. }
  27.  
  28. private void btnPlay_Click(object sender, EventArgs e)
  29. {
  30. if (secilenDosya != string.Empty)
  31. {
  32. // player..
  33. System.Media.SoundPlayer player = new System.Media.SoundPlayer();
  34. // ses dosyasının fiziksel yolu
  35. player.SoundLocation = secilenDosya;
  36. // ses dosyasi yüklenmesi tamamlandiğinda tetiklenecek olay
  37. player.LoadCompleted += new AsyncCompletedEventHandler(player_LoadCompleted);
  38. // ses dosyası değiştiğinde tetiklenecek olay
  39. player.SoundLocationChanged += new EventHandler(player_SoundLocationChanged);
  40. // asenkron yükleme işleminin başlatilmasi ..
  41. player.LoadAsync();
  42. }
  43. }
  44.  
  45. void player_SoundLocationChanged(object sender, EventArgs e)
  46. {
  47. System.Media.SoundPlayer p = (System.Media.SoundPlayer)sender;
  48. p.LoadAsync();
  49. }
  50.  
  51. void player_LoadCompleted(object sender, AsyncCompletedEventArgs e)
  52. {
  53. System.Media.SoundPlayer p = (System.Media.SoundPlayer)sender;
  54. p.Play();
  55. }
  56. }
  57. }

Leave a Reply

You must be logged in to post a comment.