VB.NET ses dosyası RAM hafızadan nasıl çalınıyor?

Vatansever

Asistan
Katılım
23 Ağustos 2007
Mesajlar
405
Reaksiyon puanı
1
Puanları
18
Programımda birkaç değişik ses dosyası kullanıyorum bunların herbirinin hartdisten tekrar tekrar okunup çalmasını istemiyorum performans açısından önce ram'a yükleyip sonra buradan çalınmasını istiyorum bu işi yapan koduda buldum ama bir sorunu var
Kod:
Dim bytes = File.ReadAllBytes(Application.StartupPath & "\ses\alert.wav")
Using s As Stream = New MemoryStream(bytes)
Dim myPlayer As New System.Media.SoundPlayer(s)
myPlayer.Play()
End Using
Yukarıdaki kodu bir butona yazınca ses çalıyor ama her butona basınca ram'a yüklüyor ve çalıyor işte bu olmadı formload'da bir kere yüklensin birdaha burdan çalınsın istiyorum kodu aşağıdaki gibi düzenledim olmadı hata veriyor (Kapalı bir akışa erişilemez diyor) ku kodu düzeltebilirmisiniz?
Kod:
Imports System.IO

Public Class Form1
    Dim myPlayer As System.Media.SoundPlayer

    Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
        Dim bytes = File.ReadAllBytes(Application.StartupPath & "\ses\alert.wav")
        Using s As Stream = New MemoryStream(bytes)
            myPlayer = New System.Media.SoundPlayer(s)
        End Using
    End Sub

    Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
        myPlayer.Play()
    End Sub

End Class
 

algea

Doçent
Katılım
15 Temmuz 2011
Mesajlar
505
Reaksiyon puanı
22
Puanları
18
Neden ses dosyalarını bu şekilde yapmıyorsun kardeşim!!!
Kod:
My.Computer.Audio.Play(My.Resources.gun, AudioPlayMode.Background)
 

Vatansever

Asistan
Katılım
23 Ağustos 2007
Mesajlar
405
Reaksiyon puanı
1
Puanları
18
Neden ses dosyalarını bu şekilde yapmıyorsun kardeşim!!!
Kod:
My.Computer.Audio.Play(My.Resources.gun, AudioPlayMode.Background)
Programımda klik sesleri dahil birçok işlev için ses seçenekleri var program her ses gerektiğinde hartdiske erişim olsun istemiyorum antivirüs bilgisayarı tararken yada bilgisayarı yavaşlatan bir şey çalışırkende benim programımın hartdiske erişimini nekadar sınırlarsam o kadar etkilenmeden performanlı çalışır diye bu şekilde yapmak istiyorum program açılışında ram hafızaya ses dosyalarını yükleyip sessi ramdan çalarsam hartdiske erişimi azaltırım. (Performans için programımı optimize ediyorum)
 

algea

Doçent
Katılım
15 Temmuz 2011
Mesajlar
505
Reaksiyon puanı
22
Puanları
18
Peki ses dosyalarını nerede sunacaksın Sonra başın ağırımasın iş yapayım derken…
 

annttiigs

Profesör
Katılım
7 Şubat 2007
Mesajlar
2,589
Reaksiyon puanı
24
Puanları
218
Dim bytes = File.ReadAllBytes(Application.StartupPath & "\ses\alert.wav")

bu kod parçacığı çalıştığı sürece hdd'den okur ve çalar.

Bunun yerine sen seslerini global olarak bir yerde tut ve uygulaman açılırken hepsini yükle. (yukarıdaki readAllBytes ile).

Sonra ihtiyacın olduğunda tuttuğun global byte listesinden çek ve çal.
 

Vatansever

Asistan
Katılım
23 Ağustos 2007
Mesajlar
405
Reaksiyon puanı
1
Puanları
18
Dim bytes = File.ReadAllBytes(Application.StartupPath & "\ses\alert.wav")

bu kod parçacığı çalıştığı sürece hdd'den okur ve çalar.

Bunun yerine sen seslerini global olarak bir yerde tut ve uygulaman açılırken hepsini yükle. (yukarıdaki readAllBytes ile).

Sonra ihtiyacın olduğunda tuttuğun global byte listesinden çek ve çal.
Aslında o kod birkere oda yüklemek için çalışıyor birdaha ses dosyası kullanılacağı zaman ram'den çalışıyor, söylediğinde aklıma yatıryor onuda deniycem, teşekkür ederim.
 
Üst