内存访问冲突从任务中处理 libvlcsharp 对象

Memory Access Violation disposing libvlcsharp objects from a task

Link to full sample app C# Winform 应用内置 Visual Studio 2019 libvlcsharp runtime version v4.0.30319 version 3.4.4.0

我构建了一个更简单的应用程序,它与当前部署的应用程序存在相同的问题。

这是让玩家开始的代码:

videoView1.MediaPlayer.Play(new Media(_libVLC, URI,FromType.FromLocation));

这是清理代码片段:

  videoView1.MediaPlayer.Stop();
  videoView1.MediaPlayer.Dispose();
  videoView1.Dispose();
  //dispose glibvlc at higher level

MediaPlayer 处理正常,没有错误。但是,videoview dispose 会导致内存访问冲突。我知道这不正常,因为我构建了一个简单的 C# 应用程序,但没有使用任务来处理和清理对象,而且工作得很好。

但是,我尝试调试的应用程序的每个流都有一个线程显示,用于管理每个连接的设置和关闭。

如果代码只是在媒体播放器上调用处置而不处置 videoview 对象,则包含 libvlcsharp 对象的对象在处置时会导致内存访问冲突。

如果我不处理 MediaPlayer 对象,任何后续对象处理调用都可以正常工作。 我已经确认这会泄漏内存。

Ask 函数询问用户是否要退出程序或杀死当前播放器并重新构建和启动它。

这是 c# 示例询问函数。

public void Ask()
        {
            while (true)
            {
                DialogResult r = MessageBox.Show("Dispose and Start Again?", "Memory Access Violation Test", MessageBoxButtons.OKCancel);
                if (r == DialogResult.OK)
                {
                    videoView1.MediaPlayer.Stop();
                    videoView1.MediaPlayer.Dispose();
                    videoView1.Dispose();
                    StartVideo();
                }
                else
                {
                    Invoke(new Action(() => this.Close()));                   
                }
            }

        }

要修复 libvlcsharp 和 libvlcwinforms.winforms

升级到版本 3.6.1.0 的问题