none
Windows Media Playerクラスでのメモリリークについて RRS feed

  • 質問

  • Visual Studio 2015(.Net Frameworkは4.5.2)にて、以下のコードからなる
    Windows Formアプリケーションを作成しています。
    button1をクリックしたらTaskを起動し、タスク内で音声再生/停止を繰り返します。


    -------------------------------------
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Media;
    using System.Text;
    using System.Threading;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    using WMPLib;


    namespace SoundTest
    {
        public partial class Form1 : Form
        {
            private bool flag = false;
            private WindowsMediaPlayer player = new WindowsMediaPlayer();
            private int count = 0;


            public Form1()
            {
                InitializeComponent();
            }


            private void button1_Click(object sender, EventArgs e)
            {
                if(flag == false)
                {
                    flag = true;
                    Task.Run(() => Test());
                    button1.Text = "stop";
                    count = 0;
                }
                else
                {
                    flag = false;
                    this.Close();
                }
            }


            private void Test()
            {
                while(flag == true)
                {
                    player.URL = @"C:\Windows\Media\tada.wav";
                    player.controls.play();
                    Thread.Sleep(1000);
                    count++;
                    player.controls.stop();
                    player.close();
                }
            }


            private void Form1_FormClosing(object sender, FormClosingEventArgs e)
            {
                flag = false;
                MessageBox.Show(count.ToString());
            }
        }
    }
    -------------------------------------


    このアプリケーションを実行するとプロセスのメモリ(private bytes)が
    右肩上がりで上昇し続け、メモリリークが発生します。
    何かしら考えられる要因はありますでしょうか。


    アプリケーションを実施した環境は以下のとなります。


    Windows 10 バージョン 1803(ビルドバージョン:17134.407)
    Realtek HD Audio ドライババージョン (10.0.17134.1)
    2019年10月24日 2:00

すべての返信

  • murawさん、こんにちは。フォーラムオペレーターのHarukaです。
    MSDNフォーラムにご投稿くださいましてありがとうございます。

    私のテストに基づいて、あなたの問題を再現できませんでした。
    私のほうでは、メモリリークではなく、メモリが正常であるとのことでした。

    プログラムにメモリリークがあることをどのように確認しますでしょうか。

    C#のメモリリークをよりよく理解するには、Memory Leaks C#のリンクを参照することをお勧めします。

    どうぞよろしくお願いいたします。


    MSDN/ TechNet Community Support Haruka
    ~参考になった投稿には「回答としてマーク」をご設定ください。なかった場合は「回答としてマークされていない」も設定できます。同じ問題で後から参照した方が、情報を見つけやすくなりますので、 ご協力くださいますようお願いいたします。また、MSDNサポートに賛辞や苦情がある場合は、MSDNFSF@microsoft.comまでお気軽にお問い合わせください。~

    2019年10月29日 7:09
    モデレータ