Voor een applicatie heb ik een interessant probleem. Het gaat om het gebruik van de gezichtherkenningssoftware Luxand. Deze API haalt netjes een bitmap van de webcam en detecteerd hier zo'n 60 punten op. Deze 60 punten worden daarna door mij op het image zelf getekend. Al deze code staat in een apart thread dat zo snel draait als het kan.
Nu zou ik dit plaatje graag ook tonen in de GUI maar het bitmap object is natuurlijk niet op het GUI thread gemaakt. Luxand maakt per frame een nieuw bitmapje dus ik weet zeker dat het andere thread, na bijvoorbeeld een event, er niets meer mee gaat doen. Maar hoe verplaats ik het bitmapje naar het GUI thread?
Nu begrijp ik na het zien van deze SO vraag dat het bitmap object natuurlijk toegankelijk is via alle threads. Maar Visual Studio waarschuwt me dan netjes voor een CrossThreadException omdat ik iets met het bitmapje probeer te doen terwijl het niet op hetzelfde thread gemaakt is. Normaliter zou ik dan een invoke doen zodat alle methodes op het zelfde thread uitgevoerd worden als waar het object gemaakt is. Maar in dit geval heb ik gewoon de data uit het object nodig en wil ik het niet op een andere manier beïnvloeden
Wie kan mij van adviezen verzien anders dan de CT exception uit zetten?
Nu zou ik dit plaatje graag ook tonen in de GUI maar het bitmap object is natuurlijk niet op het GUI thread gemaakt. Luxand maakt per frame een nieuw bitmapje dus ik weet zeker dat het andere thread, na bijvoorbeeld een event, er niets meer mee gaat doen. Maar hoe verplaats ik het bitmapje naar het GUI thread?
Nu begrijp ik na het zien van deze SO vraag dat het bitmap object natuurlijk toegankelijk is via alle threads. Maar Visual Studio waarschuwt me dan netjes voor een CrossThreadException omdat ik iets met het bitmapje probeer te doen terwijl het niet op hetzelfde thread gemaakt is. Normaliter zou ik dan een invoke doen zodat alle methodes op het zelfde thread uitgevoerd worden als waar het object gemaakt is. Maar in dit geval heb ik gewoon de data uit het object nodig en wil ik het niet op een andere manier beïnvloeden
Wie kan mij van adviezen verzien anders dan de CT exception uit zetten?
[ Voor 3% gewijzigd door roy-t op 21-03-2012 14:07 ]