Measurement Studio for VC++

cancel
Showing results for 
Search instead for 
Did you mean: 

interface maintenue en ordre pour un thread différent

Bonjour,

je développe actuellement une application utilisant le multithreading, dont un thread qui ecrit dans un fichier Excel.

Cependant, quand l'application cherche à ecrire dans le fichier Excel j'ai le messege suivant:
"L'application a appelé une interface qui etait maintenue en ordre pour un thread différent"

Merci de vos informations pour m'orienter à ressoudre ce problème!!!!
0 Kudos
Message 1 of 5
(5,509 Views)

Bonjour,

Ce probléme peut survenir si on cherche à enregister (ou lire) sur le même fichier.

Qu'utilisez vous comme fonctions ? des activX, le toolkit fournit par National Instrument ?

Si vous essayé dans deux thread juste d'ouvrir Excel, avez vous le même phenoméne ?

Avez vous un code d'erreur ?

Cordialement,

Christophe S.
Account Manager East of France І Certified LabVIEW Associate Developer І National Instruments France

Message 2 of 5
(5,484 Views)

Bonjour,

Pour simplifier, ce message signifie que vous avez créé un objet ActiveX Excel dans un thread et que vous tentez d'y accéder à partir d'un autre thread. Ceci n'est pas directement réalisable, je vous suggère de consulter la base de connaissance Microsoft Processes, Threads, and Apartments.

Généralement, le fait d'appeler la fonction CoInitialize() au début du nouveau thread permet d'initialiser la biblitohèque COM pour ce nouveau thread et corrige le problème.

Pour plus d'informations, je vous suggère de vous référer au liens fournis ci-dessus.

Cordialement,

Message 3 of 5
(5,463 Views)
Merci de toutes ses informations,

Mon application fonctionne correctement à présent, j'ai implémenté les fonctions CoInitialize et CoUninitialize dans chacun des threads faisant des accés sur le fichier Excel!!!

Mon application permet à un utilisateur de réaliser du séquencement sur des sorties et d'effectuer de l'acquisition sur les entrées spécifiées.

Cependant, je souhaite sauvegarder les données lues durant l'éssai pour ensuite avoir une trace de ce dernier mais aussi dans le but d'effectuer une interprétation des résultats.

Je souhaiterais savoir s'il est préférable d'effectuer l'enregistrement des valeurs dans un fichier Excel ou dans un fichier Texte???

Je me pose cette question car je suppose déjà que la charge CPU avec Excel est plus "lourde" (bien que aujourd hui les machines sont performantes!!) que si j'utilisais un fichier texte, mais je suppose egalement des limites en taille d'acquisition de données avec Excel (genre 65536) Que peut t'on faire quand on atteint cette limite???

Merci d'avance de vos explications pour me permettre d'optimiser mon application!!!
0 Kudos
Message 4 of 5
(5,461 Views)

Effectivement une feuille de calcul Excel ne compte que 65536 lignes. Ceci peut-être une limitation, bien que vous ayez la possibilité d'écrire dans une nouvelle feuille de calcul une fois que cette limite est atteinte.
La limitation en taille d'un fichier texte dépendra principalement du type de partition (Size Limitations in NTFS and FAT File Systems).

Quand à la charge CPU, elle sera plus importante si vous utilisez Excel, mais je ne pense vraiment pas que ce soit significatif. La différence se fera plutôt sur l’occupation de la mémoire. Si vous avez besoin d'enregistrer plusieurs centaines de Mo de données, il est préférable d'utiliser un fichier. Et encore un fichier binaire serait préférable à un fichier texte afin d'optimiser la taille occupée sur le disque et de faciliter l'accès aux données.

Cordialement,

0 Kudos
Message 5 of 5
(5,445 Views)