Skip to content
This repository has been archived by the owner on Jan 21, 2022. It is now read-only.

Vlc.DotNet freezes (don't call Vlc.DotNet from a Vlc.DotNet callback)

Jérémy VIGNELLES edited this page Aug 29, 2019 · 4 revisions

One of the most common issue reported is that Vlc.DotNet freezes under certain conditions.

Vlc.DotNet uses libvlc under the hood. When libvlc calls a code, it is running in libvlc's thread. In that thread, if you call libvlc code, the libvlc code will deadlock because it waits for your method to return.

You need to make sure that your method returns control to libvlc so that it can execute your request.

For example, let's say you want the video to loop, and you do something like this

public void MediaEndReached(object sender, EventArgs args)
{
   this.MediaPlayer.Play("<another file>");
}

you will experience deadlocks.

Instead, do something like this:

public void MediaEndReached(object sender, EventArgs args)
{
   ThreadPool.QueueUserWorkItem(_ => this.MediaPlayer.Play("<another file>"));
}

This ensures that your code is executed asynchronously on another thread, and control is correctly returned to libvlc.