![]() |
| | ||||
| ||||
| |
| |||
| Annie L. wrote: > Je cherche à faire attendre mon application pendant un certain temps > (secondes, centième ou millième de secondes) > > Pas de thread car j'attends que quelques secondes! > > Quelqu'un aurait-il une solution ? > > Merci de vos réponses! Hello, Regarde du côté de Threading.Thread.sleep() -- Bill2 Utilisez Process Manager, gestionnaire de processus automatique : http://www.bill2-software.com//processmanager/ |
| |||
| Bonjour Attendre un moment. Vous pouvez utiliser l'API Sleep ou créer une routine de temporisation à la seconde. Voyez ces codes facilement adaptables en .net : Private Sub Form_Activate() Label1 = "Bonjour, patientez 10 secondes ..." DoEvents Tempori 10 Label2 = "Le temps est écoulé. Au revoir." End Sub Private Sub Tempori(Attente As Single) Dim Limite As Single Limite = Timer + Attente Do While Timer < Limite Loop End Sub Les fractions de secondes acceptées. -- Bonne réception. andre.araste***wanadoo.fr http://perso.orange.fr/andre.araste/ Membre du Club Win's: http://www.clubwins.org Avertissement: Je ne vends rien. > "Annie L." <AnnieL***discussions.microsoft.com> a écrit dans le message de news: A2AAE962-568C-4207-8219-A9598912FDFA***microsoft.com... > Je cherche à faire attendre mon application pendant un certain temps > (secondes, centième ou millième de secondes) > > Pas de thread car j'attends que quelques secondes! > > Quelqu'un aurait-il une solution ? > > Merci de vos réponses! |
| |||
| Voici ce que j'ai trouvé : Public Sub AttendreDelai(ByVal TempsSeconde As Double) Dim dblTempsAttente As Double = 0 dblTempsAttente = Environment.TickCount + TempsSeconde While Environment.TickCount < dblTempsAttente Application.DoEvents() End While End Sub Mais cette méthode me cause certain problème, et elle est conçu en VB 2003 !! Voici la même méthode conçu en VB 2005 : Public Sub AttendreDelai(ByVal TempsSeconde As Double) Dim dblTempsAttente As Double = 0 dblTempsAttente = My.Computer.Clock.TickCount + TempsSeconde While My.Computer.Clock.TickCount < dblTempsAttente My.Application.DoEvents() End While End Sub Il y a juste un hic!!! il me donne une erreur sur "DoEvents" !!! Est-ce qu'il me manque une un "Imports" ? Pourtant j'ai essayé différentes options et cela ne fonctionne pas du tout avec "DoEvents" Merci de vos réponses! "andre.araste" wrote: > Bonjour > > Attendre un moment. > > Vous pouvez utiliser l'API Sleep ou créer une routine de temporisation Ã*** la > seconde. Voyez ces codes facilement adaptables en .net : > > Private Sub Form_Activate() > Label1 = "Bonjour, patientez 10 secondes ..." > DoEvents > Tempori 10 > Label2 = "Le temps est écoulé. Au revoir." > End Sub > > Private Sub Tempori(Attente As Single) > Dim Limite As Single > Limite = Timer + Attente > Do While Timer < Limite > Loop > End Sub > > Les fractions de secondes acceptées. > -- > Bonne réception. > andre.araste***wanadoo.fr > http://perso.orange.fr/andre.araste/ > Membre du Club Win's: http://www.clubwins.org > Avertissement: Je ne vends rien. > > > "Annie L." <AnnieL***discussions.microsoft.com> a écrit dans le message de > news: A2AAE962-568C-4207-8219-A9598912FDFA***microsoft.com... > > Je cherche Ã*** faire attendre mon application pendant un certain temps > > (secondes, centième ou millième de secondes) > > > > Pas de thread car j'attends que quelques secondes! > > > > Quelqu'un aurait-il une solution ? > > > > Merci de vos réponses! > > > |
| |||
| Annie L. wrote: > Voici ce que j'ai trouvé : > Public Sub AttendreDelai(ByVal TempsSeconde As Double) > Dim dblTempsAttente As Double = 0 > dblTempsAttente = Environment.TickCount + TempsSeconde > While Environment.TickCount < dblTempsAttente > Application.DoEvents() > End While > End Sub > > Mais cette méthode me cause certain problème, et elle est conçu en VB > 2003 !! Voici la même méthode conçu en VB 2005 : > > Public Sub AttendreDelai(ByVal TempsSeconde As Double) > Dim dblTempsAttente As Double = 0 > dblTempsAttente = My.Computer.Clock.TickCount + TempsSeconde > While My.Computer.Clock.TickCount < dblTempsAttente > My.Application.DoEvents() > End While > End Sub > > Il y a juste un hic!!! il me donne une erreur sur "DoEvents" !!! > Est-ce qu'il me manque une un "Imports" ? Pourtant j'ai essayé > différentes options et cela ne fonctionne pas du tout avec "DoEvents" > > Merci de vos réponses! > pourquoi réinventer la roue ? il y a Threading.Thread.sleep() qui prend en paramètre un nb de millisecondes ... ça devrait faire l'affaire, non ? -- Bill2 Utilisez Process Manager, gestionnaire de processus automatique : http://www.bill2-software.com/processmanager/ |
| |||
| Donc, si je comprends bien, je veux attendre 1 seconde = Threading.Thread.Sleep(1000) tout simplement !!!! Et pourtant après avoir fait des tests, cela ne fonctionne pas par rapport Ã*** ce que je veux faire!!!!! Je m'explique : lorsque j'ajoute des produits dans une facture, je crée un "CodeID" qui se sert de l'heure système et date du jour et j'appelle la fonction ci-dessous "AttendreDelai" sinon il y a plusieurs produits qui ont le même "CodeID" car l'ordinateur est très rapide. C'est pourquoi avec cette fonction "AttendreDelai = 0.01" fait que tous mes "CodeID" sont tous différents! J'essai le même procédé avec "Threading.Thread.sleep(1000)" et tous mes "CodeID" de produits sont presque identiques!!! VoilÃ*** pourquoi cela ne fonctionne pas !!!! Pourquoi donc ?????? Merci de vos réponses! "Bill2" wrote: > Annie L. wrote: > > Voici ce que j'ai trouvé : > > Public Sub AttendreDelai(ByVal TempsSeconde As Double) > > Dim dblTempsAttente As Double = 0 > > dblTempsAttente = Environment.TickCount + TempsSeconde > > While Environment.TickCount < dblTempsAttente > > Application.DoEvents() > > End While > > End Sub > > > > Mais cette méthode me cause certain problème, et elle est conçu en VB > > 2003 !! Voici la même méthode conçu en VB 2005 : > > > > Public Sub AttendreDelai(ByVal TempsSeconde As Double) > > Dim dblTempsAttente As Double = 0 > > dblTempsAttente = My.Computer.Clock.TickCount + TempsSeconde > > While My.Computer.Clock.TickCount < dblTempsAttente > > My.Application.DoEvents() > > End While > > End Sub > > > > Il y a juste un hic!!! il me donne une erreur sur "DoEvents" !!! > > Est-ce qu'il me manque une un "Imports" ? Pourtant j'ai essayé > > différentes options et cela ne fonctionne pas du tout avec "DoEvents" > > > > Merci de vos réponses! > > > > pourquoi réinventer la roue ? > il y a Threading.Thread.sleep() > qui prend en paramètre un nb de millisecondes ... > ça devrait faire l'affaire, non ? > > -- > Bill2 > Utilisez Process Manager, gestionnaire de processus automatique : > http://www.bill2-software.com/processmanager/ > > > |
| |||
| Après différents essais, j'ai trouvé le problème avec le Threading..... Avant je renvoyais une valeur comme suit "0.01" ou "0.001" et cela fonctionnait très bien. Mais avec le Threading... il faut lui passer "100" ou "10" ou "1" et non des fractions car il ne réagit pas avec des fractions comme "0.001"!!! Tout est réglé et fonctionne très bien! Merci pour votre aide! "Annie L." wrote: > Donc, si je comprends bien, je veux attendre 1 seconde = > Threading.Thread.Sleep(1000) tout simplement !!!! > > Et pourtant après avoir fait des tests, cela ne fonctionne pas par rapport Ã*** > ce que je veux faire!!!!! Je m'explique : lorsque j'ajoute des produits dans > une facture, je crée un "CodeID" qui se sert de l'heure système et date du > jour et j'appelle la fonction ci-dessous "AttendreDelai" sinon il y a > plusieurs produits qui ont le même "CodeID" car l'ordinateur est très rapide. > C'est pourquoi avec cette fonction "AttendreDelai = 0.01" fait que tous mes > "CodeID" sont tous différents! > J'essai le même procédé avec "Threading.Thread.sleep(1000)" et tous mes > "CodeID" de produits sont presque identiques!!! > VoilÃ*** pourquoi cela ne fonctionne pas !!!! Pourquoi donc ?????? > > Merci de vos réponses! > > "Bill2" wrote: > > > Annie L. wrote: > > > Voici ce que j'ai trouvé : > > > Public Sub AttendreDelai(ByVal TempsSeconde As Double) > > > Dim dblTempsAttente As Double = 0 > > > dblTempsAttente = Environment.TickCount + TempsSeconde > > > While Environment.TickCount < dblTempsAttente > > > Application.DoEvents() > > > End While > > > End Sub > > > > > > Mais cette méthode me cause certain problème, et elle est conçu en VB > > > 2003 !! Voici la même méthode conçu en VB 2005 : > > > > > > Public Sub AttendreDelai(ByVal TempsSeconde As Double) > > > Dim dblTempsAttente As Double = 0 > > > dblTempsAttente = My.Computer.Clock.TickCount + TempsSeconde > > > While My.Computer.Clock.TickCount < dblTempsAttente > > > My.Application.DoEvents() > > > End While > > > End Sub > > > > > > Il y a juste un hic!!! il me donne une erreur sur "DoEvents" !!! > > > Est-ce qu'il me manque une un "Imports" ? Pourtant j'ai essayé > > > différentes options et cela ne fonctionne pas du tout avec "DoEvents" > > > > > > Merci de vos réponses! > > > > > > > pourquoi réinventer la roue ? > > il y a Threading.Thread.sleep() > > qui prend en paramètre un nb de millisecondes ... > > ça devrait faire l'affaire, non ? > > > > -- > > Bill2 > > Utilisez Process Manager, gestionnaire de processus automatique : > > http://www.bill2-software.com/processmanager/ > > > > > > |
| |||
| Difficile à dire sans voir le code *minimum* qui montre le problème. Exemple : For i As Integer = 0 To 10 Debug.WriteLine(Date.Now.Ticks) System.Threading.Thread.Sleep(1000) Next Personnellement je ne me baserais pas sur la date et l'heure mais sur un compteur ou un GUID pour pouvoir créer ces lignes aussi rapidement que possible.. -- Patrice "Annie L." <AnnieL***discussions.microsoft.com> a écrit dans le message de news: 34FA4C70-5F66-4302-B4D4-68599749AC28***microsoft.com... > Donc, si je comprends bien, je veux attendre 1 seconde = > Threading.Thread.Sleep(1000) tout simplement !!!! > > Et pourtant après avoir fait des tests, cela ne fonctionne pas par rapport > à > ce que je veux faire!!!!! Je m'explique : lorsque j'ajoute des produits > dans > une facture, je crée un "CodeID" qui se sert de l'heure système et date du > jour et j'appelle la fonction ci-dessous "AttendreDelai" sinon il y a > plusieurs produits qui ont le même "CodeID" car l'ordinateur est très > rapide. > C'est pourquoi avec cette fonction "AttendreDelai = 0.01" fait que tous > mes > "CodeID" sont tous différents! > J'essai le même procédé avec "Threading.Thread.sleep(1000)" et tous mes > "CodeID" de produits sont presque identiques!!! > Voilà pourquoi cela ne fonctionne pas !!!! Pourquoi donc ?????? > > Merci de vos réponses! > > "Bill2" wrote: > >> Annie L. wrote: >> > Voici ce que j'ai trouvé : >> > Public Sub AttendreDelai(ByVal TempsSeconde As Double) >> > Dim dblTempsAttente As Double = 0 >> > dblTempsAttente = Environment.TickCount + TempsSeconde >> > While Environment.TickCount < dblTempsAttente >> > Application.DoEvents() >> > End While >> > End Sub >> > >> > Mais cette méthode me cause certain problème, et elle est conçu en VB >> > 2003 !! Voici la même méthode conçu en VB 2005 : >> > >> > Public Sub AttendreDelai(ByVal TempsSeconde As Double) >> > Dim dblTempsAttente As Double = 0 >> > dblTempsAttente = My.Computer.Clock.TickCount + TempsSeconde >> > While My.Computer.Clock.TickCount < dblTempsAttente >> > My.Application.DoEvents() >> > End While >> > End Sub >> > >> > Il y a juste un hic!!! il me donne une erreur sur "DoEvents" !!! >> > Est-ce qu'il me manque une un "Imports" ? Pourtant j'ai essayé >> > différentes options et cela ne fonctionne pas du tout avec "DoEvents" >> > >> > Merci de vos réponses! >> > >> >> pourquoi réinventer la roue ? >> il y a Threading.Thread.sleep() >> qui prend en paramètre un nb de millisecondes ... >> ça devrait faire l'affaire, non ? >> >> -- >> Bill2 >> Utilisez Process Manager, gestionnaire de processus automatique : >> http://www.bill2-software.com/processmanager/ >> >> >> |
| |||
| Il faut vivre le problème pour comprendre pourquoi je me base sur la date et l'heure pour créer des "CodeID" Si je te parle d'une version réseau avec plus de 20 postes qui font des factures en même temps !!!!!!!!!! Récupérer des numéros pour savoir où on est rendu dans le codeId et durant ce temps quelqu'un d'autre a déjÃ*** pris ce numéro (EN RÉSEAU) !!!!! Je viens de me rendre compte que "Threading.Thread.Sleep" me cause d'autres problèmes!!!! Je me dois de revenir Ã*** mon ancienne méthode qui d'ailleurs fonctionne très bien et ne me cause pas de problèmes!!! (voir post plus haut) Merci! "Patrice" wrote: > Difficile Ã*** dire sans voir le code *minimum* qui montre le problème. > > Exemple : > > For i As Integer = 0 To 10 > Debug.WriteLine(Date.Now.Ticks) > System.Threading.Thread.Sleep(1000) > Next > > > Personnellement je ne me baserais pas sur la date et l'heure mais sur un > compteur ou un GUID pour pouvoir créer ces lignes aussi rapidement que > possible.. > > -- > Patrice > > "Annie L." <AnnieL***discussions.microsoft.com> a écrit dans le message de > news: 34FA4C70-5F66-4302-B4D4-68599749AC28***microsoft.com... > > Donc, si je comprends bien, je veux attendre 1 seconde = > > Threading.Thread.Sleep(1000) tout simplement !!!! > > > > Et pourtant après avoir fait des tests, cela ne fonctionne pas par rapport > > Ã*** > > ce que je veux faire!!!!! Je m'explique : lorsque j'ajoute des produits > > dans > > une facture, je crée un "CodeID" qui se sert de l'heure système et date du > > jour et j'appelle la fonction ci-dessous "AttendreDelai" sinon il y a > > plusieurs produits qui ont le même "CodeID" car l'ordinateur est très > > rapide. > > C'est pourquoi avec cette fonction "AttendreDelai = 0.01" fait que tous > > mes > > "CodeID" sont tous différents! > > J'essai le même procédé avec "Threading.Thread.sleep(1000)" et tous mes > > "CodeID" de produits sont presque identiques!!! > > VoilÃ*** pourquoi cela ne fonctionne pas !!!! Pourquoi donc ?????? > > > > Merci de vos réponses! > > > > "Bill2" wrote: > > > >> Annie L. wrote: > >> > Voici ce que j'ai trouvé : > >> > Public Sub AttendreDelai(ByVal TempsSeconde As Double) > >> > Dim dblTempsAttente As Double = 0 > >> > dblTempsAttente = Environment.TickCount + TempsSeconde > >> > While Environment.TickCount < dblTempsAttente > >> > Application.DoEvents() > >> > End While > >> > End Sub > >> > > >> > Mais cette méthode me cause certain problème, et elle est conçu en VB > >> > 2003 !! Voici la même méthode conçu en VB 2005 : > >> > > >> > Public Sub AttendreDelai(ByVal TempsSeconde As Double) > >> > Dim dblTempsAttente As Double = 0 > >> > dblTempsAttente = My.Computer.Clock.TickCount + TempsSeconde > >> > While My.Computer.Clock.TickCount < dblTempsAttente > >> > My.Application.DoEvents() > >> > End While > >> > End Sub > >> > > >> > Il y a juste un hic!!! il me donne une erreur sur "DoEvents" !!! > >> > Est-ce qu'il me manque une un "Imports" ? Pourtant j'ai essayé > >> > différentes options et cela ne fonctionne pas du tout avec "DoEvents" > >> > > >> > Merci de vos réponses! > >> > > >> > >> pourquoi réinventer la roue ? > >> il y a Threading.Thread.sleep() > >> qui prend en paramètre un nb de millisecondes ... > >> ça devrait faire l'affaire, non ? > >> > >> -- > >> Bill2 > >> Utilisez Process Manager, gestionnaire de processus automatique : > >> http://www.bill2-software.com/processmanager/ > >> > >> > >> > > > |
| |||
| D'où justement l'intérêt du GUID qui permet de créer des identifiants à n'importe quel moment, à n'importe quel endroit (avec en pratique une probabilité de collision quasi nulle) (http://msdn2.microsoft.com/fr-fr/lib...stem.guid.aspx). Après ton approche fonctionnera sans doute aussi très bien avec sans doute une très faible probabilité de collision. Thread.Sleep pause le thread courant. Attention à DoEvents qui pourrait avoir des effets également (en laissant d'autres évènements être traités). -- Patrice "Annie L." <AnnieL***discussions.microsoft.com> a écrit dans le message de news: E10A3293-160F-4E7D-89AD-0769D8396193***microsoft.com... > Il faut vivre le problème pour comprendre pourquoi je me base sur la date > et > l'heure pour créer des "CodeID" Si je te parle d'une version réseau avec > plus > de 20 postes qui font des factures en même temps !!!!!!!!!! > Récupérer des numéros pour savoir où on est rendu dans le codeId et durant > ce temps quelqu'un d'autre a déjà pris ce numéro (EN RÉSEAU) !!!!! > > Je viens de me rendre compte que "Threading.Thread.Sleep" me cause > d'autres > problèmes!!!! Je me dois de revenir à mon ancienne méthode qui d'ailleurs > fonctionne très bien et ne me cause pas de problèmes!!! (voir post plus > haut) > > > Merci! > > > "Patrice" wrote: > >> Difficile à dire sans voir le code *minimum* qui montre le problème. >> >> Exemple : >> >> For i As Integer = 0 To 10 >> Debug.WriteLine(Date.Now.Ticks) >> System.Threading.Thread.Sleep(1000) >> Next >> >> >> Personnellement je ne me baserais pas sur la date et l'heure mais sur un >> compteur ou un GUID pour pouvoir créer ces lignes aussi rapidement que >> possible.. >> >> -- >> Patrice >> >> "Annie L." <AnnieL***discussions.microsoft.com> a écrit dans le message de >> news: 34FA4C70-5F66-4302-B4D4-68599749AC28***microsoft.com... >> > Donc, si je comprends bien, je veux attendre 1 seconde = >> > Threading.Thread.Sleep(1000) tout simplement !!!! >> > >> > Et pourtant après avoir fait des tests, cela ne fonctionne pas par >> > rapport >> > à >> > ce que je veux faire!!!!! Je m'explique : lorsque j'ajoute des >> > produits >> > dans >> > une facture, je crée un "CodeID" qui se sert de l'heure système et date >> > du >> > jour et j'appelle la fonction ci-dessous "AttendreDelai" sinon il y a >> > plusieurs produits qui ont le même "CodeID" car l'ordinateur est très >> > rapide. >> > C'est pourquoi avec cette fonction "AttendreDelai = 0.01" fait que tous >> > mes >> > "CodeID" sont tous différents! >> > J'essai le même procédé avec "Threading.Thread.sleep(1000)" et tous mes >> > "CodeID" de produits sont presque identiques!!! >> > Voilà pourquoi cela ne fonctionne pas !!!! Pourquoi donc ?????? >> > >> > Merci de vos réponses! >> > >> > "Bill2" wrote: >> > >> >> Annie L. wrote: >> >> > Voici ce que j'ai trouvé : >> >> > Public Sub AttendreDelai(ByVal TempsSeconde As Double) >> >> > Dim dblTempsAttente As Double = 0 >> >> > dblTempsAttente = Environment.TickCount + TempsSeconde >> >> > While Environment.TickCount < dblTempsAttente >> >> > Application.DoEvents() >> >> > End While >> >> > End Sub >> >> > >> >> > Mais cette méthode me cause certain problème, et elle est conçu en >> >> > VB >> >> > 2003 !! Voici la même méthode conçu en VB 2005 : >> >> > >> >> > Public Sub AttendreDelai(ByVal TempsSeconde As Double) >> >> > Dim dblTempsAttente As Double = 0 >> >> > dblTempsAttente = My.Computer.Clock.TickCount + TempsSeconde >> >> > While My.Computer.Clock.TickCount < dblTempsAttente >> >> > My.Application.DoEvents() >> >> > End While >> >> > End Sub >> >> > >> >> > Il y a juste un hic!!! il me donne une erreur sur "DoEvents" !!! >> >> > Est-ce qu'il me manque une un "Imports" ? Pourtant j'ai essayé >> >> > différentes options et cela ne fonctionne pas du tout avec >> >> > "DoEvents" >> >> > >> >> > Merci de vos réponses! >> >> > >> >> >> >> pourquoi réinventer la roue ? >> >> il y a Threading.Thread.sleep() >> >> qui prend en paramètre un nb de millisecondes ... >> >> ça devrait faire l'affaire, non ? >> >> >> >> -- >> >> Bill2 >> >> Utilisez Process Manager, gestionnaire de processus automatique : >> >> http://www.bill2-software.com/processmanager/ >> >> >> >> >> >> >> >> >> |
| |||
| En éseau je ne peux pas travailler avec une "très faible probabilité de collision" parce que cela va engendrer des erreurs d'enregistrements et que des clients mécontents vont appeler pour se plaindre et il faut éviter cela Ã*** tout prix. Ma méthode repose sur des centièmes et des millièmes de seconde pour générer mes CodeID et je n'ai jamais eu de problèmes auparavant (pendant 5 ans) !!!! On ne me signale aucuns problèmes concernant ma version réseau, aucune collision, même pratiquement aucun traffic réseau!! Ce que je voulais dans ce "post" ne concerne même pas ce que j'ai décrit ci-haut!! Ce que je voulais c'est d'attendre un certain temps avant de poursuivre un traitement et que "Threading..." me cause des problèmes selon l'utilisation que je veux en faire !!! J'ai décidé de conserver ma méthode qui fonctionne très bien même s'il y a des façons plus élégante de le faire mais cela ne fonctionne pas dans mon cas ! Merci ! "Patrice" wrote: > D'où justement l'intérêt du GUID qui permet de créer des identifiants Ã*** > n'importe quel moment, Ã*** n'importe quel endroit (avec en pratique une > probabilité de collision quasi nulle) > (http://msdn2.microsoft.com/fr-fr/lib...stem.guid.aspx). > > Après ton approche fonctionnera sans doute aussi très bien avec sans doute > une très faible probabilité de collision. > > Thread.Sleep pause le thread courant. Attention Ã*** DoEvents qui pourrait > avoir des effets également (en laissant d'autres évènements être traités). > > -- > Patrice > > "Annie L." <AnnieL***discussions.microsoft.com> a écrit dans le message de > news: E10A3293-160F-4E7D-89AD-0769D8396193***microsoft.com... > > Il faut vivre le problème pour comprendre pourquoi je me base sur la date > > et > > l'heure pour créer des "CodeID" Si je te parle d'une version réseau avec > > plus > > de 20 postes qui font des factures en même temps !!!!!!!!!! > > Récupérer des numéros pour savoir où on est rendu dans le codeId et durant > > ce temps quelqu'un d'autre a déjÃ*** pris ce numéro (EN RÉSEAU) !!!!! > > > > Je viens de me rendre compte que "Threading.Thread.Sleep" me cause > > d'autres > > problèmes!!!! Je me dois de revenir Ã*** mon ancienne méthode qui d'ailleurs > > fonctionne très bien et ne me cause pas de problèmes!!! (voir post plus > > haut) > > > > > > Merci! > > > > > > "Patrice" wrote: > > > >> Difficile Ã*** dire sans voir le code *minimum* qui montre le problème. > >> > >> Exemple : > >> > >> For i As Integer = 0 To 10 > >> Debug.WriteLine(Date.Now.Ticks) > >> System.Threading.Thread.Sleep(1000) > >> Next > >> > >> > >> Personnellement je ne me baserais pas sur la date et l'heure mais sur un > >> compteur ou un GUID pour pouvoir créer ces lignes aussi rapidement que > >> possible.. > >> > >> -- > >> Patrice > >> > >> "Annie L." <AnnieL***discussions.microsoft.com> a écrit dans le message de > >> news: 34FA4C70-5F66-4302-B4D4-68599749AC28***microsoft.com... > >> > Donc, si je comprends bien, je veux attendre 1 seconde = > >> > Threading.Thread.Sleep(1000) tout simplement !!!! > >> > > >> > Et pourtant après avoir fait des tests, cela ne fonctionne pas par > >> > rapport > >> > Ã*** > >> > ce que je veux faire!!!!! Je m'explique : lorsque j'ajoute des > >> > produits > >> > dans > >> > une facture, je crée un "CodeID" qui se sert de l'heure système et date > >> > du > >> > jour et j'appelle la fonction ci-dessous "AttendreDelai" sinon il y a > >> > plusieurs produits qui ont le même "CodeID" car l'ordinateur est très > >> > rapide. > >> > C'est pourquoi avec cette fonction "AttendreDelai = 0.01" fait que tous > >> > mes > >> > "CodeID" sont tous différents! > >> > J'essai le même procédé avec "Threading.Thread.sleep(1000)" et tous mes > >> > "CodeID" de produits sont presque identiques!!! > >> > VoilÃ*** pourquoi cela ne fonctionne pas !!!! Pourquoi donc ?????? > >> > > >> > Merci de vos réponses! > >> > > >> > "Bill2" wrote: > >> > > >> >> Annie L. wrote: > >> >> > Voici ce que j'ai trouvé : > >> >> > Public Sub AttendreDelai(ByVal TempsSeconde As Double) > >> >> > Dim dblTempsAttente As Double = 0 > >> >> > dblTempsAttente = Environment.TickCount + TempsSeconde > >> >> > While Environment.TickCount < dblTempsAttente > >> >> > Application.DoEvents() > >> >> > End While > >> >> > End Sub > >> >> > > >> >> > Mais cette méthode me cause certain problème, et elle est conçu en > >> >> > VB > >> >> > 2003 !! Voici la même méthode conçu en VB 2005 : > >> >> > > >> >> > Public Sub AttendreDelai(ByVal TempsSeconde As Double) > >> >> > Dim dblTempsAttente As Double = 0 > >> >> > dblTempsAttente = My.Computer.Clock.TickCount + TempsSeconde > >> >> > While My.Computer.Clock.TickCount < dblTempsAttente > >> >> > My.Application.DoEvents() > >> >> > End While > >> >> > End Sub > >> >> > > >> >> > Il y a juste un hic!!! il me donne une erreur sur "DoEvents" !!! > >> >> > Est-ce qu'il me manque une un "Imports" ? Pourtant j'ai essayé > >> >> > différentes options et cela ne fonctionne pas du tout avec > >> >> > "DoEvents" > >> >> > > >> >> > Merci de vos réponses! > >> >> > > >> >> > >> >> pourquoi réinventer la roue ? > >> >> il y a Threading.Thread.sleep() > >> >> qui prend en paramètre un nb de millisecondes ... > >> >> ça devrait faire l'affaire, non ? > >> >> > >> >> -- > >> >> Bill2 > >> >> Utilisez Process Manager, gestionnaire de processus automatique : > >> >> http://www.bill2-software.com/processmanager/ > >> >> > >> >> > >> >> > >> > >> > >> > > > |
| |||
| On 12 fév, 20:39, Annie L. <Ann...***discussions.microsoft.com> wrote: > En éseau je ne peux pas travailler avec une "très faible probabilitéde > collision" parce que cela va engendrer des erreurs d'enregistrements et que > des clients mécontents vont appeler pour se plaindre et il faut évitercela à > tout prix. > Ma méthode repose sur des centièmes et des millièmes de seconde pourgénérer > mes CodeID et je n'ai jamais eu de problèmes auparavant (pendant 5 ans) !!!! > On ne me signale aucuns problèmes concernant ma version réseau, aucune > collision, même pratiquement aucun traffic réseau!! > > Ce que je voulais dans ce "post" ne concerne même pas ce que j'ai décrit > ci-haut!! > Ce que je voulais c'est d'attendre un certain temps avant de poursuivre un > traitement et que "Threading..." me cause des problèmes selon l'utilisation > que je veux en faire !!! J'ai décidé de conserver ma méthode qui fonctionne > très bien même s'il y a des façons plus élégante de le faire mais cela ne > fonctionne pas dans mon cas ! > > Merci ! > > > > "Patrice" wrote: > > D'où justement l'intérêt du GUID qui permet de créer des identifiants à > > n'importe quel moment, à n'importe quel endroit (avec en pratique une > > probabilité de collision quasi nulle) > > (http://msdn2.microsoft.com/fr-fr/lib...stem.guid.aspx). > > > Après ton approche fonctionnera sans doute aussi très bien avec sansdoute > > une très faible probabilité de collision. > > > Thread.Sleep pause le thread courant. Attention à DoEvents qui pourrait > > avoir des effets également (en laissant d'autres évènements êtretraités). > > > -- > > Patrice > > > "Annie L." <Ann...***discussions.microsoft.com> a écrit dans le message de > >news: E10A3293-160F-4E7D-89AD-0769D8396__BEGIN_MASK_n#9g02mG7!__...__END_MASK_i? a63jfAD$z__***microsoft.com... > > > Il faut vivre le problème pour comprendre pourquoi je me base sur ladate > > > et > > > l'heure pour créer des "CodeID" Si je te parle d'une version réseau avec > > > plus > > > de 20 postes qui font des factures en même temps !!!!!!!!!! > > > Récupérer des numéros pour savoir où on est rendu dans le codeId et durant > > > ce temps quelqu'un d'autre a déjà pris ce numéro (EN RÉSEAU) !!!!! > > > > Je viens de me rendre compte que "Threading.Thread.Sleep" me cause > > > d'autres > > > problèmes!!!! Je me dois de revenir à mon ancienne méthode qui d'ailleurs > > > fonctionne très bien et ne me cause pas de problèmes!!! ***(voir post plus > > > haut) > > > > Merci! > > > > "Patrice" wrote: > > > >> Difficile à dire sans voir le code *minimum* qui montre le problème. > > > >> Exemple : > > > >> *** For i As Integer = 0 To 10 > > >> *** *** *** *** *** *** Debug.WriteLine(Date.Now.Ticks) > > >> *** *** *** *** *** *** System.Threading.Thread.Sleep(1000) > > >> *** *** *** *** Next > > > >> Personnellement je ne me baserais pas sur la date et l'heure mais surun > > >> compteur ou un GUID pour pouvoir créer ces lignes aussi rapidement que > > >> possible.. > > > >> -- > > >> Patrice > > > >> "Annie L." <Ann...***discussions.microsoft.com> a écrit dans le message de > > >>news: 34FA4C70-5F66-4302-B4D4-68599749A__BEGIN_MASK_n#9g02mG7!__...__END_MASK_i? a63jfAD$z__***microsoft.com... > > >> > Donc, si je comprends bien, je veux attendre 1 seconde = > > >> > Threading.Thread.Sleep(1000) *** *** ***tout simplement !!!! > > > >> > Et pourtant après avoir fait des tests, cela ne fonctionne pas par > > >> > rapport > > >> > à > > >> > ce que je veux faire!!!!! Je m'explique : ***lorsque j'ajoute des > > >> > produits > > >> > dans > > >> > une facture, je crée un "CodeID" qui se sert de l'heure systèmeet date > > >> > du > > >> > jour et j'appelle la fonction ci-dessous "AttendreDelai" sinon il ya > > >> > plusieurs produits qui ont le même "CodeID" car l'ordinateur est très > > >> > rapide. > > >> > C'est pourquoi avec cette fonction "AttendreDelai = 0.01" fait que tous > > >> > mes > > >> > "CodeID" sont tous différents! > > >> > J'essai le même procédé avec "Threading.Thread.sleep(1000)" et tous mes > > >> > "CodeID" de produits sont presque identiques!!! > > >> > Voilà pourquoi cela ne fonctionne pas !!!! *** Pourquoi donc ?????? > > > >> > Merci de vos réponses! > > > >> > "Bill2" wrote: > > > >> >> Annie L. wrote: > > >> >> > Voici ce que j'ai trouvé : > > >> >> > *** Public Sub AttendreDelai(ByVal TempsSeconde As Double) > > >> >> > *** *** ***Dim dblTempsAttente As Double = 0 > > >> >> > *** *** ***dblTempsAttente = Environment.TickCount + TempsSeconde > > >> >> > *** *** ***While Environment.TickCount < dblTempsAttente > > >> >> > *** *** *** *** Application.DoEvents() > > >> >> > *** *** ***End While > > >> >> > *** End Sub > > > >> >> > Mais cette méthode me cause certain problème, et elle est conçu en > > >> >> > VB > > >> >> > 2003 !! Voici la même méthode conçu en VB 2005 : > > > >> >> > *** Public Sub AttendreDelai(ByVal TempsSeconde As Double) > > >> >> > *** *** ***Dim dblTempsAttente As Double = 0 > > >> >> > *** *** ***dblTempsAttente = My.Computer.Clock.TickCount + TempsSeconde > > >> >> > *** *** ***While My.Computer.Clock.TickCount < dblTempsAttente > > >> >> > *** *** *** *** My.Application.DoEvents() > > >> >> > *** *** ***End While > > >> >> > *** End Sub > > > >> >> > Il y a juste un hic!!! il me donne une erreur sur "DoEvents" !!! > > >> >> > Est-ce qu'il me manque une un "Imports" ? ***Pourtant j'ai essayé > > >> >> > différentes options et cela ne fonctionne pas du tout avec > > >> >> > "DoEvents" Je pense qu'il y a plus de chance qu'un client gagne le gros lot à l'Euromillion qu'il y ait une collision entre deux guid identiques... Après, si cela représente malgré tout un trop gros risque, effectivement ok. > > > >> >> > Merci de vos réponses! > > > >> >> pourquoi réinventer la roue ? > > >> >> il y a Threading.Thread.sleep() > > >> >> qui prend en paramètre un nb de millisecondes ... > > >> >> ça devrait faire l'affaire, non ? > > > >> >> -- > > >> >> Bill2 > > >> >> Utilisez Process Manager, gestionnaire de processus automatique : > > >> >>http://www.bill2-software.com/processmanager/- Masquer le texte desmessages précédents - > > - Afficher le texte des messages précédents - |
| |
| |
![]() |
| Tags: attendre, moment |
| Outils de la discussion | |
| Modes d'affichage | |
| |
| ||||
| Discussion | Auteur | Forum | Réponses | Dernier message |
| Il fallait s'y attendre.... | Goonies | Newsgroup fr.rec.sport.football | 0 | 23/07/2008 12h19 |
| Re: On ne peut plus attendre | Thierry | Newsgroup fr.soc.politique | 0 | 11/04/2008 13h29 |
| Re: On ne peut plus attendre | lgjean | Newsgroup fr.soc.politique | 0 | 11/04/2008 13h13 |
| LED : attendre des jours meilleurs | Charles VASSALLO | Newsgroup fr.rec.photo.labo.numerique | 1 | 23/11/2007 12h41 |
| Mio 168 : attendre le A201 ? | Tochiro | Newsgroup alt.fr.pocket.pc | 0 | 03/10/2005 13h21 |