Il s'agit plus d'un besoin de Windows que d'un WPF, et revient à la conception d'origine des formulaires et des contrôles Windows, d'avant .NET. STAThread fait référence à "Single-Threaded Apartments" qui se réfère au modèle de filetage utilisé par le filetage (principal) courant. Le modèle de thread utilisé détermine la manière dont les autres applications .NET et COM communiqueront avec votre application (et de manière inhérente, ses threads). Le modèle d'application monothread nécessite qu'aucun objet ne "réside" dans plus d'un thread STA à la fois, par rapport au modèle de thread MTA; et permet le passage de pointeurs vers des données à travers les appartements uniquement via le marshalling-as-object. Fondamentalement, avec la déclaration [STAThread], d'autres applications sauront quelle est la politique de votre thread lors de l'envoi de vos données. Le modèle STA est le modèle de thread le plus courant pour les threads/applications Windows. mais vous rencontrerez parfois du code qui ne fonctionnera pas s'il est appelé à partir d'un thread modélisé STA, car il est conçu pour envoyer/recevoir des données à travers les limites de thread de manière non conforme aux restrictions STA. Connaître au préalable le modèle d'appartement d'un thread donné permet à l'EDI d'intercepter ces exceptions lors de la compilation au lieu d'obtenir des erreurs de violation d'accès désagréables lorsque vous tentez d'utiliser un objet à travers les limites de thread pendant l'exécution.
Vous pouvez lire STA et threads MTA de l'article MSDN à l'adresse: http://msdn.microsoft.com/en-us/library/ms680112(VS.85).aspx
Notez que les applications .NET même normales (avant de WPF) nécessaires la déclaration [STAThread] au-dessus de la main().
si ce n'est pas "trop compliqué" pour un débutant .. alors vous n'avez pas besoin de ..J'aime lire :) –
Il est toujours agréable d'avoir un résumé ici sur SO à des fins de référence, et si ledit blog se déconnecte, le message est supprimé, Microsoft brûle dans une boule de feu de l'enfer, etc. –