English | 日本
BCL Technologies
Shopping CartContact Us
Base de connaissances
BCL easy PDF SDK

Comment puis-je construire un multi-thread PDF application avec easyPDF SDK?

Dernière mise à jour:

  • SDK PDF multi-applications basées

    Construction d'une application PDF multi-filetée avec easyPDF SDK est en fait assez simple. Notre SDK PDF ne gère pas directement, votre demande devra être responsable de multi-threading le SDK PDF. Vous aurez besoin de créer les objets de SDK PDF à l'intérieur de leurs propres fils uniques, traiter l'opération que vous souhaitez traiter, puis libérer les objets une fois fait. Tant que les objets restent dans leurs propres threads uniques ils vont travailler sans interférer les uns avec les autres. Les méthodes PrintJob.PrintOut () sont tous thread-safe.


    Toutefois, certains aspects du SDK PDF ne sont pas thread-safe. En particulier, les appels à des méthodes .Save (), comme PrinterSetting.Save () ne sont pas thread-safe. Il s'agit d'une limitation regrettable d'utiliser une imprimante virtuelle pour traiter les documents du SDK PDF. Imprimantes ne peuvent avoir un réglage actif pour leur taille du papier, ou de leur orientation du papier, parce Imprimantes ne peut que fait Imprimer un document PDF à la fois en raison de limitations physiques. Notre PDF Imprimeur SDK ne peut pas avoir une telle limitation physique, mais le cadre de l'imprimante intégrée à Windows suppose que c'est le cas et le traite en conséquence.


    Si vous appelez la méthode PrinterSetting.Save (), il écrase les paramètres de l'imprimante pour ce compte utilisateur. En tant que tel, si ces paramètres sont modifiés au cours d'une conversion permanente, il peut causer des problèmes. Dans le meilleur des cas, la mise en forme entre deux pages différentes sera différent, dans le pire des cas, il peut causer des violations d'accès mémoire qui tuent le processus de conversion.


    Si vous imprimez sur une machine de bureau, exécutant l'une conversion à la fois, ce n'est pas un problème. Vous pouvez modifier les paramètres en fonction de chaque conversion individuelle. Même si vous avez plusieurs utilisateurs, comme un environnement Terminal Server, tant que chacun est connecté en tant que leur propre mode d'exécution d'une application de bureau, ils peuvent tous changer les paramètres à leur guise. Cependant, dans un environnement de serveur avec le chargeur, cela ne fonctionnera pas, car le chargeur doit fonctionner à travers un compte d'utilisateur spécifique, et donc les modifications apportées aux PrinterSettings va se passer dans ce compte d'utilisateur unique.


    En tant que tel, si vous souhaitez imprimer à partir d'un serveur, vous devez déterminer les paramètres optimaux et les appliquer une fois en utilisant les .Save () méthodes pour les objets appropriés, à quel point ces paramètres deviennent la valeur par défaut pour tous les travaux ultérieurs sur cette machine. Si vous avez besoin pour être en mesure de modifier les paramètres de la meilleure solution est d'exécuter des serveurs parallèles multiples, chacune avec leurs propres paramètres, et trier les emplois appropriée.


  • PDF objet SDK Com applications multi-thread sur la base

    PDF Les objets COM SDK de la BCL ne sont pas capables de travailler dans un appartement multithread (MTA). Ils doivent être exécutés dans un single-threaded apartment (STA). Dans NET Framework 4 pour le réglage d'un fil de défaut est MTA. Aucun de nos objets PDF COM fonctionne dans un appartement multi-thread, de sorte que vous devez définir manuellement le fil dans STA. Si un objet COM est MTA, cela signifie plusieurs threads peuvent interagir avec lui. Nos objets PDF COM sont STA, ce qui signifie strictement mono-thread. Vous pouvez exécuter plusieurs instances de nos objets PDF COM en parallèle, mais plusieurs threads ne pouvez pas partager le même objet PDF COM. Chaque objet COM PDF doit être isolé dans un seul thread.


    Ce concept de l'appartement (MTA contre STA) est un aspect de objets COM. Lorsque vous créez un nouveau sujet de discussion dans NET, vous devez choisir si c'est un STA ou MTA. C'est seulement important si vous prévoyez d'utiliser des objets COM PDF. Un thread MTA permet de partager le même objet COM entre plusieurs threads. C'est fondamentalement différent de STA. MTA et STA travaillent de façon totalement différente. Depuis EasyConverter et easyPDF sont tous STA, le fil doit être STA.


    Cela ne signifie pas que vous ne pouvez pas exécuter plusieurs threads avec easyPDF. Vous pouvez, mais seulement dans un appartement STA. C'est extrêmement contre-intuitif, car on appelle ça un "single-threaded apartment", mais cela ne signifie pas réellement vous êtes limité à un seul thread. Toutefois, si vous essayez d'exécuter un objet COM STA comme easyPDF dans un appartement MTA, le système sérialiser les appels de fonction. Il ne fonctionnera pas dans plusieurs threads. Un objet COM STA ne fonctionne que dans plusieurs threads si elle est exécutée dans un thread STA.


    Ainsi, les deux objets MTA et STA COM sont capables de multi-threading, mais ils travaillent de manière totalement différente. L'essentiel est que vous devez exécuter easyPDF d'un appartement STA. Et le client peut résoudre ce problème en une seule ligne de code.


-
 
BCL
© 1993 - , BCL Technologies.
All other trademarks are the property of their respective owners.