Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
De volgende overwegingen voor tablet-pc-threading zijn specifiek voor de beheerde bibliotheek.
- Thread-Safety
- STA- en MTA-toepassingen
- Overwegingen voor Windows Forms-threading
- Overwegingen voor het Klembord
- Uitzonderingen binnen Event Handlers
- objecten en besturingselementen verwijderen
- StylusInput-API's
Thread-Safety
De beheerde bibliotheekklassen van het Tablet PC Platform zijn over het algemeen niet thread-veilig. De volgende verzamelingen zijn thread-safe op lidniveau; Deze verzamelingen garanderen echter niet dat een enumerator wordt beveiligd als een andere thread tegelijkertijd op de verzameling werkt:
STA- en MTA-toepassingen
Beheerde toepassingen die zijn gemaakt met behulp van de wizards in Microsoft Visual Studio .NET zijn standaard STA (Single Threaded Apartment). U kunt het appartement voor uw toepassing wijzigen door het kenmerk STA-thread of multithreaded apartment (MTA) in te stellen op het toegangspunt van uw toepassing.
Als uw toepassing wordt uitgevoerd in een MTA, moet u thread-veilige code schrijven; Hierdoor kunt u echter bepaalde prestatieproblemen met betrekking tot gebeurtenissen verbeteren.
Zie STAThreadAttribute klasse en MTAThreadAttribute Class voor meer informatie over de STA-thread- en MTA-threadkenmerken.
Overwegingen voor Windows Forms Threading
De besturingselementen InkPicture en InkEdit breiden de Windows Forms-besturingselementen uit. Windows Forms-besturingselementen maken gebruik van het STA-model (single threaded apartment) omdat Windows Forms is gebaseerd op systeemeigen Win32-vensters die inherent één thread zijn. In beheerde code moeten inktbesturingselementen worden gemaakt in dezelfde thread als de hoofdthread voor het formulier.
In een STA-toepassing vinden bepaalde gebeurtenissen plaats op een andere thread dan de gebruikersinterfacethread van de toepassing. Wanneer u een Windows Forms-object of -besturingselement aanroept, met inbegrip van de InkPicture- en besturingselementen voor InkEdit, gebruikt u vanuit een Tablet PC-gebeurtenishandler de overgenomen methode van het object of besturingselement Control.Invoke. De eigenschap InvokeRequired, overgenomen van de besturingselementklasse, kan worden gebruikt om te bepalen of dit nodig is.
In de volgende gebeurtenis-handler voor de Recognition gebeurtenis wordt de eigenschap InvokeRequired getest en als TRUE, wordt de gebeurtenis-handler opnieuw aangeroepen vanuit de gebruikersinterface-thread.
void recoContext_Recognition(object sender,
RecognizerContextRecognitionEventArgs e)
{
if (InvokeRequired)
{
Invoke( new RecognizerContextRecognitionEventHandler(
recoContext_Recognition ),
new object[] { sender, e } );
return;
}
// Use the recognition result here.
}
Als u een UserControl- in een browser plaatst (zie Webbesturingselementen), wordt deze uitgevoerd als een STA-toepassing. Voor slimme clienttoepassingen (zie No Touch Deployment), heeft de ontwikkelaar volledige controle over de ApartmentState. (De standaardwaarde is over het algemeen STA, maar kan MTA zijn, afhankelijk van uw versie van CLR.) Zie Threading Considerations for the StylusInput API'svoor threading-problemen met betrekking tot de RealTimeStylus-.
Zie Multithreaded Windows Forms Control Samplevoor meer informatie over het aanroepen van Windows Forms-formulieren vanuit een MTA-toepassing.
Overwegingen voor plakbord
Het Klembord object werkt alleen vanuit een STA-thread. Wanneer u probeert te kopiëren naar of te plakken vanaf het Klembord vanuit een thread die geen STA is, krijgt u een ThreadStateException-. Als uw toepassing MTA is, maakt u een STA-thread om de methodeaanroepen van het Klembord en enkele van de andere aspecten van de gebruikersinterface van uw toepassing af te handelen.
Uitzonderingen binnen event handlers
Uitzonderingen kunnen niet worden gegenereerd vanuit tablet-pc-gebeurtenishandlers. Als een gebeurtenishandlerdelegate voor een Tablet PC-object of -verzameling bijvoorbeeld drie geregistreerde handlers heeft en de eerste een uitzondering genereert, gebeurt het volgende:
- De eerste handler wordt afgesloten.
- De uitzondering gaat verloren.
- De resterende handlers worden niet aangeroepen.
Objecten en besturingselementen verwijderen
Als u een geheugenlek wilt voorkomen, moet u expliciet de methode Verwijderen aanroepen op elk Tablet PC-object of besturingselement waaraan een gebeurtenis-handler is gekoppeld voordat het object of besturingselement buiten het bereik valt.
Als u de prestaties in uw toepassing wilt verbeteren, verwijdert u handmatig een Tablet PC-object of -besturingselement dat de methode Verwijderen implementeert wanneer het object of besturingselement niet meer nodig is.
StylusInput API's
Zie Threading Considerations for the StylusInput APIsvoor informatie over overwegingen voor threadgebruik voor het RealTimeStylus-object en de StylusInput API's.