Benutzer mit den meisten Antworten
Std::thread in VS2010

Frage
-
Hallo zusammen,
ich versuche schon seit einigen Tagen threads in einer Windows Forms Anwendung zu starten.
Dabei habe ich die Boost Library verwendet, bei einem einfachen Konsolenprogramm hat das auch nach ein paar kleinen Schwierigkeiten funktioniert. In der Windows Forms Anwendung hingegen tritt ein Fehler nach dem anderen auf, zu erst trat dieser Fehler auf allein durch die Anweisung #include <boost/thread> auf:
Fehler 2 error C2472: "boost::detail::basic_timed_mutex::unlock" kann nicht in verwaltetem Code generiert werden: "Es wurde eine systeminterne Funktion gefunden, die in verwaltetem Code nicht unterstützsützt wird." Kompilieren Sie mit /clr, um ein gemischtes Abbild zu generieren.
nachdem ich es geschafft hatte diesen Fehler zu terminieren, indem ich #include <boost/thread/thread> verwendet hatte, trat dieser Fehler bei der Erstellung eines einfachen threads, der eine Funktion ausführen sollte auf:
Fehler error C2237: Adresse von ***** kann nur übernommen werden, wenn eine Delegatinstanz erstellt wird.
Ich erstellte also eine Delegatinstanz zu erstellen, aber nun trat dieser Fehler auf:
Fehler 2 error C3265: Ein verwalteter 'f' kann nicht in einem nicht verwalteten 'boost::detail::thread_data<F>' deklariert werden durch gcroot<> konnte ich auch diesen Fehler beheben, doch nun gibt es folgende Fehlermeldungen:
Fehler 2 error LNK2022: Fehler bei Metadatenoperation (8013119F) : Es ist ein TypeRef ohne die erforderliche passende TypeDef vorhanden: (dummy): (0x0100002e).
und
Fehler 3 error LNK1215: Fehler bei Metadatenoperation (8013119F)
Ich glaube langsam, es ist gar nicht möglich die Boost Library in C++/CLI einzubinden, zumindest habe ich sowas in der Art gelesen. Deshalb möchte ich jetzt andere Threads verwenden. Ich weiß, dass es im neuen C++11 oder auch C++0x genannt einen neuen Header <thread> gibt, aber IntelliSence findet ihn bei mir nicht, es scheint also so, als wenn diese Verzeichnisse VS2010 noch nicht bekannt sind. Bei meiner Recherche stieß ich auf keine vernünftige Antwort auf die Frage: Ist es denn möglich die std::threads in VS2010 zu verwenden?
Ich wäre euch dankbar wenn ihr mir helfen könntet.
Hefeteig
- Bearbeitet Robert BreitenhoferModerator Donnerstag, 30. August 2012 13:31 Formatierung
- Verschoben Robert BreitenhoferModerator Donnerstag, 30. August 2012 13:36 Visual C++/CLI (aus:Visual Studio)
Antworten
-
Du verwendest native und managed Code zusammen. Das macht nur Sinn, wenn Du genau weisst, was Du tust und Du InterOp-Szenarien unterstützen willst!
Verwende bitte "System::Threading::Thread", wenn Du schon unbedingt .NET verwendet willst...
Ansonsten siehe:
http://blog.kalmbach-software.de/de/2010/03/05/ccli-und-winforms-macht-keinen-sinn/
Jochen Kalmbach (MVP VC++)- Als Antwort markiert Robert BreitenhoferModerator Donnerstag, 30. August 2012 13:30
Alle Antworten
-
Du verwendest native und managed Code zusammen. Das macht nur Sinn, wenn Du genau weisst, was Du tust und Du InterOp-Szenarien unterstützen willst!
Verwende bitte "System::Threading::Thread", wenn Du schon unbedingt .NET verwendet willst...
Ansonsten siehe:
http://blog.kalmbach-software.de/de/2010/03/05/ccli-und-winforms-macht-keinen-sinn/
Jochen Kalmbach (MVP VC++)- Als Antwort markiert Robert BreitenhoferModerator Donnerstag, 30. August 2012 13:30
-
Danke für den Tipp mit System::threading, aber wie ist dass denn jetzt mit dem neuen C++ Standard in VS2010 und da speziell der std::thread?
- Bearbeitet Robert BreitenhoferModerator Donnerstag, 30. August 2012 13:29 Formatierung
-
Hallo Hefeteig,
Ich gehe davon aus, dass die Antwort Dir weitergeholfen hat.
Solltest Du noch "Rückfragen" dazu haben, so gib uns bitte Bescheid.Grüße,
RobertRobert Breitenhofer, MICROSOFT
Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip „Entwickler helfen Entwickler“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.
-
Hallo Hefeteig,
- Immer für eine Neue Frage einen Neuen Thread aufmachen
Grundsätzlich ist zu jedem neuen Thema ein eigener Thread zu öffnen, denn dadurch wird die Übersicht gewahrt.
Ein eigener Thread nutzt der Kommunikation, verhindert Spannungen und Streit und trägt der Übersichtlichkeit in einem Forum bei.
- Lösungsbeiträge als „Die Antwort“ markieren
Bitte markieren Sie den Beitrag, der zur Lösung geführt hat, als "Die Antwort". Durch Bewerten eines Beitrags als "Die Antwort" können andere Teilnehmer die Lösung schneller finden. Außerdem können Sie dem Benutzer, der die Antwort eingereicht hat, für seinen Beitrag danken und zur Steigerung der Antwortqualität in der Diskussionsgruppe beitragen.[Quelle: Forenregeln]
Wie bewerte ich einen Beitrag als hilfreich? Um einen Beitrag als hilfreich zu bewerten, klicken Sie in einem beliebigen Beitrag auf Als hilfreich bewerten. Sie können Ihre Stimme nur einmal für einen Beitrag abgeben.
[Quelle: Häufig gestellte Fragen]
Eine Übersicht über alle verfügbaren Microsoft Foren findest Du unter [Info]
Eine Übersicht über alle verfügbaren Microsoft Hilfe & Support-Angebot findest Du unter http://www.msdn-support.de
Ich danke Dir für Dein Verständnis!
Grüße,
Robert
Robert Breitenhofer, MICROSOFT
Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip „Entwickler helfen Entwickler“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.