Threads in einer Forms Anwendung



  • Seeervus,

    ich hab die ganze Zeit mit der VCL programmiert. Jetzt muss ich auf Grund externer Bibliotheken auf Microsoft umsteigen. Ich möchte meine Software auch hier auf Forms-Basis aufbauen.

    Dummerweise stecken da einige Threads in der Anwendung, die als Zustandsautomaten fungieren. In der VCL habe ich TThread verwenden können. Klasse abgeleitet, Programmcode und Funktionen eingebaut. Fertig.

    Wie behandle ich denn jetzt Threads mit Visual Studio 2005 im Zusammenspiel mit Windows Forms? Ich bin da noch nicht so drin. Welches Tutorial kann ich da mal schmökern? ODer mit welcher Klasse kann ich da ansetzen?

    Oder sollte ich besser an diesem Punkt gleich auf die Boost umsteigen?



  • Einfach den Thread starten... System::Threading::Thread::Start...

    Bzgl. WinForms und Threads hat sich eigentlich seit einführung von Windows nix geändert... niemals ein Control von einem anderen Thread ansprechen!
    In WinForms gibt es dazu "Invoke" bzw. "BeginInvoke" um den Aufruf in den "richtigen" Thread zu verlegen...

    PS: Ich würde es aber in C# machen, wenn Du eh nur WinForms und .NET verwenden willst!!!



  • Nicht nur. Stecken noch andere Dinge drin. Ausserdem kann ich kein C#.

    Ich muss ne komplette Anwendung mit Borland Klassen umstricken auf Microsoft.

    Naja .NET war eigentlich der Grund, warum ich bei Borland gelandet bin. Aber mir scheint, dass ich .NET benutzen muss, wenn ich die Funktionalitätem will oder?



  • Auch wenn Du kein C# kannst, würde ich zu C# raten, da es sehr ähnlich wie C++ und BCL ist...
    Du machst Dich nur unglücklich, wenn Du eine grosse Anwendung in C++/CLI schreibst (wenn es genausogut auch in C# gehen würde).
    C# ist fast trivial...

    Einige Dinge aus .NET kann man via COM-InterOp nutzen, aber sicherlich nicht das ganze Windows-Forms...



  • Was ist mit fremden C++ Bibliotheken, die ich einbinden muss? Wie ists mit DLLs?

    Ich muss von Borland weg, da sich die Bibliotheken nicht einbinden lassen. DArutner eine 5000€ BV-Bibliothek.

    Geht das alles mal eben so in C#?

    Was ist mit den ganzen STL Klassen und Funktionen, die ich im Einsatz habe?

    Das Problem ist, dass das die Basis für eine komplette Anlagensteuerung wird. Die Oberfläche basiert auf Forms, da ich nicht viel Sinn darin sehe die paar Textfelder, Buttons und Checkboxen in eine umständliche MFC-Anwendung zu packen.

    Die BV-Bibliothek dient zum Realisieren der kompletten Bildverarbeitung. Und die unterstützt keine Borland Compiler. Ok eigentlich andersrum.

    Und da die Meisten Bibliotheken (Ich muss noch CAN einbinden, einen Kameratreiber einbinden) sowieso nicht für Borland gemacht sind, muss ich umsteigen.

    Ich hab ziemlichen Zeitdruck die Software zu schreiben, und muss jetzt das Bestehende portieren und den Prototypen fertig stellen.

    Jetzt ist einfach die Frage WAS ich aus dem Hause M verwende, da eben die STL nicht ausreicht.

    ODER ob ich auf freie Bibs umsteige.



  • Ich denke mal Du solltest Dir zuerst mal Gedanken über deine Applikations-Struktur machen, bevor Du so ein Projekt einfach mal so auf .NET (in C++/CLI) umstellst...
    Ich pers. würde Oberfläche und Steuerung komplett trennen. Die Oberfläche dann in C# machen...

    Aber sowas auf die Schnelle zu beantworten ist nicht möglich...



  • Rein theoretisch habe ich es getrennt. Die Steuerung besteht aus einem Thread als Controller und 4 weiteren, die dieser startet und steuert. Die Anwendung selbst muss nur die Oberfläche verarbeiten.

    Wenn ich da jetzt mit zwei Sprachen und zwei Anwendungen anfange, dann ist das einfach zuviel. SO weit bin ich noch nicht, um die ganze Kommunikation zwischen zwei Anwendungen zu handeln. Die Software lief ja unter Borland mit dieser Struktur ausreichend... Nur habe ich eben mit dem Microsoft Kram nicht viel Erfahrung.

    Also ich mein der Aufbau ermöglicht es ja im Grunde... Nur dann habe ich das, was ich vemreiden wollte. Die alte Software, die ich ersetze besteht aus 5 oder 6 einzelnen Konsolen Anwendungen in C++, die über Dateien miteinander kommunizieren.

    Wie gesagt. Man erwartet von mir schnelle Ergebnisse. Und ich komm jetzt arg ins SChwanken wie. Unter Borland hab ich eine Forms Anwendung, die einen Thread startet, der den Controller darstellt und dieser startet die Arbeits-Threads. Das Formular hat nur eine schmale SChnittstelle zum Conbtroller.


Anmelden zum Antworten