Bonjour,
mon programme lance 8 threads tous identiques. Dans mon thread, je charge statiquement des fonctions tous contenues dans la même DLL.
D'après vous, est ce que j'utilise judicieusement l'utilisation de DLL et le multithread ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 implementation uses SysUtils, Unit1, Dialogs, StrUtils, Math; function cRBOpen(cChannel : Byte): Byte; stdcall; external 'rbtdll.dll'; function cRBClose(cChannel : Byte): Byte; stdcall; external 'rbtdll.dll'; function cRBSyncEnd(cChannel : Byte): Byte; stdcall; external 'rbtdll.dll'; function cRBSynchro(cChannel : Byte; cBoot : Byte): Byte;stdcall; external 'rbtdll.dll'; function cRBSyncResult(cChannel : Byte): Byte; stdcall; external 'rbtdll.dll'; function cRBManufWrite(cChannel : Byte ; pxZoneManu : PChar): Byte; stdcall; external 'rbtdll.dll'; function cRBRestart (cChannel : Byte) : Byte ; stdcall ; external 'rbtdll.dll'; function cRBBootIdent (cChannel, cBootIdent : byte ; bBootIdent : Pchar) : Byte ; stdcall; external 'rbtdll.dll'; function cRBDiscXIPDir(cChannel : Byte ; pucNbFile : Pchar ; pxFileList : PChar): Byte; stdcall; external 'rbtdll.dll'; function cRBComCancel(cChannel : Byte): Byte; stdcall; external 'rbtdll.dll'; function cRBDownload(cChannel : Byte ; pcFileName : PChar): Byte; stdcall; external 'rbtdll.dll'; function cRBDwlResult (cChannel : Byte; pcPurcent : Pchar): Byte; stdcall; external 'rbtdll.dll'; function cRBDiscFormat (cChannel : Byte ; ucDisc : Char): Byte; stdcall; external 'rbtdll.dll'; function cRBFileDelete (cChannel : Byte ; ulName : longint ; usExt : integer): Byte; stdcall; external 'rbtdll.dll';
Faut t'il charger dynamiquement une DLL dans ce cas ?
Si je lance 4 programmes utilisant les memes fonctions de la DLL (sans thread) en visual basic...ca marche mais si je lance 1 programme delphi avec 4 threads le plantage est aléatoires.
Dans le thread de base, j'associe des composants visuels (avec un synchronize evidement) a la forme principale.
J'ai modifié les priorité des 8 threads et plus la priorité est faible mieux cela passe...etrange...
Partager