Interface bloquée malgré multi-thread
Bonjour
Je développe une application (WPF + C#) devant me permettre de contrôler un appareil photo à distance. Jusqu'à présent pas de problème, j'arrive à déclencher des poses.
Maintenant je voudrais lancer la prise de vue dans un thread séparé pour éviter de bloquer l'interface utilisateur pendant une longue pose. J'ai tenté ceci :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
|
//méthode Execute d'une classe implémentant ICommand
//vm est le ViewModel lié au datacontext de ma vue
public void Execute(object parameter)
{
Action dispatchAction = () =>
{
//méthode exécutant la prise de vue sur l'appareil connecté
vm.SelectedCamera.takeBulbPicture(vm.bulbTime);
};
ThreadStart start = delegate() {
vm.Dispatcher.Invoke(DispatcherPriority.Normal, dispatchAction);
};
new Thread(start).Start();
} |
Mais cela ne fonctionne pas. La prise de vue est bien exécutée mais l'interface reste bloquée. Qu'ai'je fait de faux ?