2010-12-12 6 views
1

Ich habe eine C++ - Konsole-Anwendung, die eine Variable hat, sagen wir, vardata. Ich möchte, dass meine vb.net-Anwendung auf den Inhalt von vardata zugreift. Ich dachte, ich könnte das machen, indem ich vardata in die Zwischenablage speichere und vb.net sollte den Text in der Zwischenablage bekommen. Das Problem ist, dass sich der Inhalt von vardata 150 Mal/Sekunde ändert und mir viele Änderungen fehlen, wenn die vb.net-Anwendung versucht, Zwischenablagetext zu erhalten. Gibt es eine fertige Funktion, die ich verwenden kann, um die Daten in einem Speicherbereich (C++ Seite) zu speichern und von meiner vb.net-Anwendung (vb.net-Seite) darauf zuzugreifen.Interprozesskommunikation zwischen C++ und vb.net-Anwendungen

Vielen Dank im Voraus

Antwort

1

Sie sollten die VB-Anwendung in eine Bibliothek ändern, und das in C++ Prozess laden. Es gibt verschiedene Möglichkeiten, die Daten zu übergeben. die einfachsten könnten C++/CLI (in C++) oder ein COM-Objekt (in VB) sein.

3

Sehr unglückliche Zahl. Sharing Memory wird es auch nicht lösen, Ihr VB.NET-Programm verliert leicht den Zugriff auf die CPU für 35 ms oder mehr. Fehlende Updates Und Sie wirklich wollen nicht die Zyklen zu brennen, um zu versuchen, mitzuhalten, ist die Abstimmung fugly.

Die andere Möglichkeit besteht darin, einen Sockel oder eine Named Pipe zu verwenden. Sie verlieren keine Daten und brennen keine Zyklen. Ein Eckfall ist, dass Ihr C++ - Programm festgefahren sein könnte, wenn Ihr VB.NET-Programm nicht reagiert.

Denken Sie daran, dass das menschliche Auge Aktualisierungen, die schneller als etwa 30 Mal pro Sekunde passieren, nicht wahrnehmen kann. Wenn dies eine GUI-Anforderung ist, dann sind 150 Aktualisierungen pro Sekunde ein verschwendeter Aufwand, der Ihre GUI zum Einfrieren bringen kann.

Verwandte Themen