2009-12-23 3 views
2

je reçois la « opération cross-fil non valide » ici:« opération cross-fil pas valide », même lors de l'utilisation invoquer la méthode

if (vlc.State == VlcPlayerControlState.PLAYING) 
     { 
      if (vlc.InvokeRequired) 
      { 
       vlc.Invoke(new MediaPlayerNoParameterDelegate(vlc.Stop)); 
      } 
      else 
      { 
       vlc.Stop(); // debugger points here 
      } 
     } 

Debugging me montre que vlc ne nécessite pas d'invoquer. mais le fil à partir duquel il est accédé est différent du thread sur lequel il a été créé. J'utilise l'encapsuleur libvlc.net pour jouer le son, mais le problème ne devrait pas être là. Comment puis-je me débarrasser de cette exception? J'utilise le threading et non le backgroundworker.

Merci!

+0

Essayez ceci. Marshall sur le fil de l'interface utilisateur. Appelez 'vlc.stop' et capturez sa valeur de retour. Créez maintenant une nouvelle instance de MediaPlayerNoParameterDelegate –

Répondre

1

Il semble que ce soit un bogue dans les wrappers libvlc.net.

Ma suggestion serait de toujours appeler vlc.Invoke (...). Vous subirez un (petit) coup de performance lorsque l'invocation n'est vraiment pas requise, mais si vous le faites à partir d'un thread séparé, il sera toujours nécessaire de toute façon.

Questions connexes