Visual C++ Windows form-ban hogy lehet szálat inditani?

Visual C++ Windows form-ban hogy lehet szálat inditani?
2016-03-04T20:15:19+01:00
2016-03-05T12:42:49+01:00
2022-12-03T08:15:39+01:00
minicooper
Gondoltam megpróbálok csinállni egy GUI-t valami egyszerű programomhoz.Nem vagyok teljesen tisztában a VS (Visual Studio) formozásával(ami azt illeti semmilyen más grafikus cuccal) ám mikor a Form.H-ban egy bizonyos gomb lenyomásakor meghivok egy végtelen ciklusú függvényt akkor a program beleragad és szó szoros értelmében megáll.Gondoltam akkor kidobom egy szálra ám nem tetszik a VS-nak az #include <thread> ..."Severity Code Description Project File Line Suppression State
Error C1189 #error: <thread> is not supported when compiling with /clr or /clr:pure. CppWinForm1 C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\thread 8".Nemtudom mi ez a CLR de mikor kikapcsoltam a beállitásokban forditás helyett ezerszáz hibát kaptam.Szóval hogyan kell thread-ezni form-os C++-al?
Mutasd a teljes hozzászólást!
CLR=Common Language Runtime. Ez kb. a .Net virtuális gépének a neve. Tehát ugyan C++ a nyelv, amit használsz, de ugyanúgy menedzselt környezetben fut, mint ha C# vagy VB.Net lenne. És ebben a környezetben a standard C/C++-os threadek nem léteznek, .Net-es threadeket kell használnod.
Thread Class (System.Threading)
A lap alján van C++/CLR-es példakód, számomra elég elborzasztó (a ^-ok meg a gcnew a garbage collector által (is) menedzselhető pointer ill. azt inicializáló new-variáns).
Tipp: ha WinForms-t akarsz, használj C#-ot inkább, már csak azért is mert C++/CLR-hez példák is ritkásan vannak.
És bármit is választasz, arról tudjál, hogy saját szálból a GUI szálba közvetlenül nem hívhatsz bele, delegate-k és hasonlók használatára van szükség: Multithreading in Windows Forms Controls
Mutasd a teljes hozzászólást!

  • Ha C++ és GUI, akkor a QT-t javasolnám.
    De számtalan több multiplatform könyvtár létezik.

    List of platform-independent GUI libraries - Wikipedia, the free encyclopedia
    Mutasd a teljes hozzászólást!
  • Hogy őszinte legyek nekemis felállt a ... szőr a hátamon mikor megláttam azt ^ jelet és társait.Mivel elég tapasztalatlan vagyok az ilyen formok terén azthittem higy ez a form sajátossága.Bár valahogy volt is olyan érzésem már az elején hogy ez a C++ VS Form bővítmény valami konyhában összeütött dolog lessz.Nos jelenleg azthiszem az egyszerű programjaimat átírom C#-ra aztán majd meglátom mi lessz mivel tervben van már a C# de először még a C++ -t szeretném "rendesen" nemis tudom így programmer communityban az mi lehet (kezdő? kezdő-haladó?) Na mindenesetre köszönöm:)
    Mutasd a teljes hozzászólást!
  • A C++/CLR egyfajta migrációs nyelv: ha valaki tele van C++ kóddal, akkor így tudja viszonylag fájdalommentesen bevarázsolni a .Net világába (és így pl. a WinForms-éba). 0-ról nem érdemes vele fejleszteni, mert ugyanúgy bytecode-ra fordul, mint a C#, VB.Net, stb., viszont a kód maga bonyolultabb és a dokumentációban meg ez a nyelv a mostohagyermek.
    Ha C++-t szeretnél, akkor az említett Qt nagyon érdekes választás (sokkal több, mint egy GUI keretrendszer), vagy a kifejezetten Windows-os MFC (Microsoft Foundation Classes), illetve maga a WinAPI (ez viszont alapvetően C). Amúgy közös bennük, hogy a <threads> használata egyikben sem tipikus, saját szálkezelő cuccaik vannak.
    Mutasd a teljes hozzászólást!
Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd