J'ai une API tierce. Il suffit de diffuser le média sur le port ip donné (lire le média depuis un périphérique de capture). Lorsque j'utilise cette API dans une application Windows Form, cela fonctionne. Mais quand j'appelle cette API dans une console ou un service Windows, cela ne donne pas d'erreur mais ne fonctionne pas [ne stream pas]: Il semble que cela ne prenne pas de données de flux depuis le périphérique. La seule différence entre une application est Windows Form Application, l'autre ne l'est pas .. Il n'y a vraiment aucune différence autre que celle-ci.Comportement étrange dans l'appel d'API de bibliothèque (NET et C++)
Quel genre de dépendance peut causer une telle chose? Une idée ?
PS: L'API est écrite en C++. J'utilise cette API dans NET (C++/CLI)
Exemple:
// Works in Windows Form Application
System::Void startButton_Click(System::Object^ sender, System::EventArgs^ e)
{
MyAPI->Start();
}
System::Void stopButton_Click(System::Object^ sender, System::EventArgs^ e)
{
MyAPI->Stop();
}
mais ....
// Not Work In Console or Windows Service
MyAPI->Start();
Console::WriteLine("Streaming started.Press enter to exit");
Console::Read();
MyAPI->Stop();
Console::WriteLine("Streaming stopped");
Existe-t-il un moyen simple de simuler l'émission de cette file d'attente de messages dans une console ou une application de service Windows? – Novalis
Si l'API tierce fournit un point d'entrée de service que vous pouvez appeler lorsqu'un message est reçu, oui. Si la tierce partie crée une fenêtre cachée pour recevoir les messages, encore une fois: oui. Si l'API tierce fournit une fonction qui exécute une boucle de message avec fonction de rappel: oui. Voir la discussion sur la fonction Get api GetMessage() sur MSDN. –
Merci. Va vérifier GetMessage() – Novalis