Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1325 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  [VB] gestion des process / parallélisation de procédures

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[VB] gestion des process / parallélisation de procédures

n°326432
LightKyle
Posté le 07-03-2003 à 22:34:43  profilanswer
 

Bon un exemple tout con pour commencer
 

Code :
  1. Sub procedure2()
  2. Debug.Print "machin"
  3. End Sub
  4. Private Sub Command1_Click()
  5. Debug.Print "truc"
  6. Call procedure2
  7. Debug.Print "bidule"
  8. End Sub


 
Dans la pratike, kand on clike sur le bouton Command1, ça attake sa procédure associée, puis ça passe à procedure2, & une fois k'elle est finit, ça revient dans Command1_Click
Je voudrais ke ça m'execute Command1_Click en entier, et que quand ça passe sur l'appel de l'autre procédure, ça la lance en //
C possible en VB  :??:

mood
Publicité
Posté le 07-03-2003 à 22:34:43  profilanswer
 

n°326434
Kyle_Katar​n
Posté le 07-03-2003 à 22:38:12  profilanswer
 

Le multithreding marche mal en VB. C'est "possible" par les API mais d'une rare instabilité ...

n°326469
LightKyle
Posté le 08-03-2003 à 00:01:24  profilanswer
 

spossible d'avoir un ch'tit d'exemple de code avec du multithreading dedans  :??:

n°326478
Kyle_Katar​n
Posté le 08-03-2003 à 00:10:25  profilanswer
 

J'en ai vu trainer par endroit mais c'est purement inutilisable, sauf pour des cas hyper simples... et tant que tu n'essayes pas de fermer ton app / tuer le Thread principal ;-)
 
Sur planetsourcecode tu devrait trouver des sample

n°326513
LightKyle
Posté le 08-03-2003 à 00:52:28  profilanswer
 

tout ce ke j'ai vu, ça ressemble assez à du bricolage :/
bref pas compatible avec mon appli en cours ki elle devra tourner 24h/24 avec le moins de bugs possible évidemment :d
 
kel langage gère bien le multithreading ?
le C++ je supposes mais à chake fois ke j'en fais je me bats avec des bugs à la con ki sortent d'où sait pas où [:le kneu]

n°326559
Kyle_Katar​n
Posté le 08-03-2003 à 10:05:46  profilanswer
 

Le C++ fait du multithreading très propre.

n°326641
LightKyle
Posté le 08-03-2003 à 15:11:41  profilanswer
 

Pas d'autre langage en vue ? :cry:
 
Paske le C++ :cry:
Kand je vois k'il faut preske 200 lignes de codes en VC++ pour faire la même chose k'en VB en ~15lignes à tout casser, ça me :cry:

n°326652
antp
Super Administrateur
Champion des excuses bidons
Posté le 08-03-2003 à 15:33:18  profilanswer
 

emploie C++Builder alors, pour manipuler l'interface graphique c'est proche de VB
Ou Delphi si tu veux pas faire de C++

n°326671
Kyle_Katar​n
Posté le 08-03-2003 à 16:22:48  profilanswer
 

Je suis un grand défenseur du VB et je reconnais que pour prototyper un logiciel, c'est de loin de meilleur langage. De même pour certains petits projets.
 
Mais pour le multithreading, en plus d'utiliser un code très sale il est plus qu'instable à cause des grosses ruse que l'on est obligé d'employer... Alors qu'en VC++ en 2 lignes c'est fait proprement et d'une manière franchement super efficace.

n°326678
Taz
bisounours-codeur
Posté le 08-03-2003 à 16:44:40  profilanswer
 

y a python!
 
edit: beaucoup de gens font encore du VB à outrance sous windows alors que la majorité des taches qu'ils accomplissent sont réalisables plus simplement, et plus rapidement avec python


Message édité par Taz le 08-03-2003 à 16:45:24
mood
Publicité
Posté le 08-03-2003 à 16:44:40  profilanswer
 

n°326681
LightKyle
Posté le 08-03-2003 à 16:58:52  profilanswer
 

la réelle seule "exigence" ke j'ai, c k'on puisse utiliser l'agent microsoft dans ce langage [:spamafote]
(http://www.microsoft.com/msagent/)
c pour ça ke j'ai choisi le vb à la base, paske c en VB k'il est le simple à manipuler
 
exemple en vc++:
 

Code :
  1. #ifndef STRICT
  2. #define STRICT
  3. #endif
  4. //==========================================================================
  5. //
  6. //  THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY
  7. //  KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
  8. //  IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR
  9. //  PURPOSE.
  10. //
  11. //  Copyright (C) 1997-1998 Microsoft Corporation.  All Rights Reserved.
  12. //
  13. //--------------------------------------------------------------------------
  14. //
  15. // This sample demonstrates the simplest Microsoft Agent application
  16. //
  17. //==========================================================================
  18. #include <windows.h>
  19. #include <tchar.h>
  20. #include "AgtSvr.h"
  21. #include "AgtSvr_i.c"
  22. static const LPWSTR kpwzCharacterOld = L"\\program files\\microsoft agent\\characters\\genie.acs";
  23. static const LPTSTR kpszAppTitle = _T("Microsoft Agent Samples" );
  24. extern "C" int PASCAL WinMain(HINSTANCE hInst,
  25.         HINSTANCE hInstPrev,
  26.         LPSTR lpCmdLine,
  27.         int nCmdShow) {
  28. HRESULT    hRes;
  29. _TCHAR    szError[256];
  30. VARIANT    vPath;
  31. BSTR    bszSpeak;
  32. long    lCharID;
  33. long    lRequestID;
  34. IAgentEx     *pAgentEx;
  35. IAgentCharacterEx  *pCharacterEx = NULL;
  36. // Initialize COM
  37.     if (FAILED(CoInitialize(NULL))) {
  38.  MessageBox(NULL,
  39.       _T("There was an error initializing COM." ),
  40.       kpszAppTitle,
  41.       MB_OK | MB_ICONERROR);
  42.         return -1;
  43. }
  44. // Create an instance of the Agent 2.0 server. NOTE: by
  45. // asking for an IAgentEx interface we know we will get
  46. // at least Agent 2.0. The CLSID also changed between
  47. // 1.5 and 2.0 so we know we won't get the 1.5 server.
  48. hRes = CoCreateInstance(CLSID_AgentServer,
  49.       NULL,
  50.       CLSCTX_SERVER,
  51.       IID_IAgentEx,
  52.       (LPVOID *)&pAgentEx);
  53. if (FAILED(hRes)) {
  54.  wsprintf(szError, _T("There was an error initializing Microsoft Agent, code = 0x%x" ), hRes);
  55.  MessageBox(NULL,
  56.       szError,
  57.       kpszAppTitle,
  58.       MB_OK | MB_ICONERROR | MB_TOPMOST);
  59.  CoUninitialize();
  60.  return -1;
  61. }
  62. __try {
  63.  // First try to load the default character
  64.  VariantInit(&vPath);
  65.  vPath.vt = VT_EMPTY;
  66.  hRes = pAgentEx->Load(vPath, &lCharID, &lRequestID);
  67.  if (FAILED(hRes)) {
  68.   // There's no default character. See if we can load the
  69.   // character from the directory used in most version 1.5
  70.   // applications.
  71.   vPath.vt = VT_BSTR;
  72.   vPath.bstrVal = SysAllocString(kpwzCharacterOld);
  73.   if (vPath.bstrVal == NULL) {
  74.    hRes = E_OUTOFMEMORY;
  75.    __leave;
  76.   }
  77.   hRes = pAgentEx->Load(vPath, &lCharID, &lRequestID);
  78.   // Did we successfully load a character?
  79.   if (FAILED(hRes))
  80.    __leave;
  81.  }
  82.  // Get the IAgentCharacterEx interface
  83.  hRes = pAgentEx->GetCharacterEx(lCharID, &pCharacterEx);
  84.  if (FAILED(hRes))
  85.   __leave;
  86.  // Set the language of the character
  87.  hRes = pCharacterEx->SetLanguageID(MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US));
  88.  if (FAILED(hRes))
  89.   __leave;
  90.  // Show the character.  The first parameter tells Microsoft
  91.  // Agent to show the character by playing an animation.
  92.  hRes = pCharacterEx->Show(FALSE, &lRequestID);
  93.  if (FAILED(hRes))
  94.   __leave;
  95.  // Make the character speak
  96.  bszSpeak = SysAllocString(L"Hello World!" );
  97.  hRes = pCharacterEx->Speak(bszSpeak, NULL, &lRequestID);
  98.  SysFreeString(bszSpeak);
  99.  if (FAILED(hRes))
  100.   __leave;
  101.  // This is a very simplistic sample.  Sleep for 10 seconds
  102.  // and then die.  
  103.  Sleep(10000);
  104. }
  105. __finally {
  106.  if (FAILED(hRes)) {
  107.   wsprintf(szError, _T("An error occurred in Microsoft Agent, code = 0x%x" ), hRes);
  108.   MessageBox(NULL,
  109.        szError,
  110.        kpszAppTitle,
  111.        MB_OK | MB_ICONERROR | MB_TOPMOST);
  112.  }
  113. }
  114. // Clean up
  115. if (pCharacterEx) {
  116.  // Release the character interface
  117.  pCharacterEx->Release();
  118.  // Unload the character.  NOTE:  releasing the character
  119.  // interface does NOT make the character go away.  You must
  120.  // call Unload.
  121.  pAgentEx->Unload(lCharID);
  122. }
  123. // Release the Agent
  124. pAgentEx->Release();
  125. VariantClear(&vPath);
  126. CoUninitialize();
  127. return 0;
  128. }


 
la même chose en VB (enfin là y'a une fonction en +) :
 

Code :
  1. Dim Genie As IAgentCtlCharacterEx
  2. Const DATAPATH = "genie.acs"
  3. Private Sub Form_Load()
  4.     Agent1.Characters.Load "Genie", DATAPATH
  5.     Set Genie = Agent1.Characters("Genie" )
  6.     Genie.LanguageID = &H409
  7.     TextBox.Text = "Hello World!"
  8. End Sub
  9. Private Sub Button_Click()
  10.     Genie.Show
  11.     Genie.Speak TextBox.Text
  12.     Genie.Hide
  13. End Sub

n°326685
antp
Super Administrateur
Champion des excuses bidons
Posté le 08-03-2003 à 17:31:44  profilanswer
 

en Delphi / C++Builder il doit y avoir des composants permettant d'utiliser ça aussi simplement

n°326737
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 08-03-2003 à 20:17:53  profilanswer
 

LightKyle > j'ai l'impression que tu veux le beurre, l'argent du beurre et la crémière en sus.
 
OK, avec VB tu "programmes" rapidement ! Mais tu es tributaire de la façon dont Microsoft a encapsulé l'API Win32 dans les instructions VB.
 
D'un autre coté, ce que tu gagnes en souplesse, tu le perds en puissance.
 
Ceci dit, ton cas n'est pas perdu. Si tu tiens absolument à VB, alors VB .NET est ton ami. Non seulement il est bien mieux foutu que VB6, mais en plus il te permet de gérer le multithreading de façon très propre (le framework .NET contient des classes dédiées à la gestion des threads).
En plus il est gratuit sur le site de Microsoft, et dispose d'un IDE gratuit aussi : SharpDevelop, très proche de Visual Studio .NET dans son ergonomie.
 
Mais, car il y a un mais, tu devras réapprendre totalement le langage : il n'a rien à voir avec VB6 (et tant mieux d'ailleurs).


---------------
J'ai un string dans l'array (Paris Hilton)
n°326738
LightKyle
Posté le 08-03-2003 à 20:22:06  profilanswer
 

bon je vais voir pour VB.net
faudra bien ke je m'y mette un jour au .NET de toutes manières [:spamafote]


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  [VB] gestion des process / parallélisation de procédures

 

Sujets relatifs
Gestion TWAIN et TIFF[MouseListener] gestion trop précise...
outlook et les regles de gestion[PHP, MySQL] votre avis concernant la gestion des images
gestion des exceptions dans les classes en cppGestion de fichiers joints dans un formulaire ?????
Directx 8 (gestion générale sur le principe des moteurs 3d)Quel outil de gestion de sources utilisez-vous ?
[DOS] Gestion des accentsGestion de liste sous access
Plus de sujets relatifs à : [VB] gestion des process / parallélisation de procédures


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR