Salut tout le monde,
Lorsque je crée plusieurs instances de JMP en tant que fichier .jsl appelant différents dossiers, JMP s'exécute parfois en arrière-plan même après le code exit(). J'utilise Windows 10.
Si je le relance sur le même fichier bloqué sur les fichiers JMP, cela fonctionne bien et sort.
Est-ce à cause d'un problème avec Windows 10 ou est-ce parce que JMP ne peut pas gérer 100 instances ou plus à la fois ?
Merci.
Si je comprends bien, vous avez plus de 100 instances de JMP en cours d'exécution en même temps. Je soupçonne qu'ils utilisent certaines ressources (mémoire peut-être, ou descripteurs de fichiers, ou ...) et JMP ou Windows a du mal à se remettre d'une erreur.
Je suggérerais de modifier le code qui démarre les instances JMP pour limiter le nombre d'exécutions simultanées. Je ne sais pas quel sera le nombre optimal pour la vitesse, mais je suppose que moins de 16 sur un ordinateur de bureau typique.
Il trace un tas de fichiers .jrn, .png et .txt dans le dossier spécifique et affiche un fichier .txt terminé et se ferme.
Dans la fenêtre de hacker de processus, JMP est toujours ouvert pour quelques instances que j'ai dû fermer manuellement.
Si je l'exécute à nouveau, lorsqu'il y a moins d'instances, cela fonctionne bien et je ne vois aucun JMP bloqué.
C'est pourquoi je me demandais si, lorsque vous exécutez plusieurs instances, l'utilisation de wait() vous aidera-t-elle réellement ? Si oui, quand et où dois-je utiliser wait() ? Des problèmes connus avec l'interaction d'un autre programme avec JMP dans Windows 10 ?
Application : jmp.exe
Version du cadre : v4.0.30319
Description : l'application a demandé l'arrêt du processus via System.Environment.FailFast (message de chaîne).
Message : Erreur système irrécupérable.
Empiler:
à System.Environment.FailFast(System.String)
à System.Windows.Controls.WebBrowser.TabIntoCore (System.Windows.Input.TraversalRequest)
à System.Windows.Controls.WebBrowser.OnLoadCompleted(System.Windows.Navigation.NavigationEventArgs)
à MS.Internal.Controls.WebBrowserEvent.DocumentComplete(System.Object, System.Object ByRef)
à System.RuntimeMethodHandle.InvokeMethod(System.Object, System.Object[], System.Signature, Boolean)
à System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(System.Object, System.Object[], System.Object[])
à System.Reflection.RuntimeMethodInfo.Invoke(System.Object, System.Reflection.BindingFlags, System.Reflection.Binder, System.Object[], System.Globalization.CultureInfo)
à MS.Win32.UnsafeNativeMethods+IWebBrowser2.Navigate2(System.Object ByRef, System.Object ByRef, System.Object ByRef, System.Object ByRef, System.Object ByRef)
à MS.Win32.UnsafeNativeMethods+IWebBrowser2.Navigate2(System.Object ByRef, System.Object ByRef, System.Object ByRef, System.Object ByRef, System.Object ByRef)
à System.Windows.Controls.WebBrowser.DoNavigate(System.Uri, System.Object ByRef, System.Object ByRef, System.Object ByRef, Boolean)
à WinHost.TipView.showCurrentTip()
à WinHost.TipView..ctor()
à .WinHost.newTipView()
à WinHost.WpfApp.processPendingIdleRequests()
à WinHost.WpfApp.doIdleTimeProcessing()
à System.RuntimeMethodHandle.InvokeMethod(System.Object, System.Object[], System.Signature, Boolean)
à System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(System.Object, System.Object[], System.Object[])
à System.Delegate.DynamicInvokeImpl(System.Object[])
à System.Windows.Threading.ExceptionWrapper.InternalRealCall(System.Delegate, System.Object, Int32)
à System.Windows.Threading.ExceptionWrapper.TryCatchWhen(System.Object, System.Delegate, System.Object, Int32, System.Delegate)
à System.Windows.Threading.DispatcherOperation.InvokeImpl()
à System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean)
à System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean)
à System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object)
à MS.Internal.CulturePreservingExecutionContext.Run (MS.Internal.CulturePreservingExecutionContext, System.Threading.ContextCallback, System.Object)
à System.Windows.Threading.DispatcherOperation.Invoke()
à System.Windows.Threading.Dispatcher.ProcessQueue()
à System.Windows.Threading.Dispatcher.WndProcHook(IntPtr, Int32, IntPtr, IntPtr, Boolean ByRef)
à MS.Win32.HwndWrapper.WndProc(IntPtr, Int32, IntPtr, IntPtr, Boolean ByRef)
à MS.Win32.HwndSubclass.DispatcherCallbackOperation(System.Object)
à System.Windows.Threading.ExceptionWrapper.InternalRealCall(System.Delegate, System.Object, Int32)
à System.Windows.Threading.ExceptionWrapper.TryCatchWhen(System.Object, System.Delegate, System.Object, Int32, System.Delegate)
à System.Windows.Threading.Dispatcher.LegacyInvokeImpl(System.Windows.Threading.DispatcherPriority, System.TimeSpan, System.Delegate, System.Object, Int32)
à MS.Win32.HwndSubclass.SubclassWndProc(IntPtr, Int32, IntPtr, IntPtr)
à MS.Win32.UnsafeNativeMethods.DispatchMessage (System.Windows.Interop.MSG ByRef)
à MS.Win32.UnsafeNativeMethods.DispatchMessage (System.Windows.Interop.MSG ByRef)
à System.Windows.Threading.Dispatcher.PushFrameImpl(System.Windows.Threading.DispatcherFrame)
à System.Windows.Application.RunDispatcher(System.Object)
à System.Windows.Application.RunInternal(System.Windows.Window)
à WinHost.WpfApp.Run()
Que fait votre JSL ? Comment savez-vous que la fonction de sortie a été appelée mais que l'instance JMP est toujours en cours d'exécution ? Y a-t-il quelque chose dans la fenêtre du journal ?
JMP est basé sur la mémoire.Si vous avez 100 instances simultanément, vous aurez besoin de 100x (RAM par instance).Selon les données, ce serait un minimum de 12 Go sur un système 64 bits.L'encombrement peut varier d'un système d'exploitation à l'autre, il est donc possible que vous en utilisiez plus sur Windows 10 ?Combien de mémoire avez-vous?Quelle version de Windows 10 utilisez-vous ?
Merci,
Brian Corcoran
Développement JMP