Ciao a tutti,
Quando creo più istanze di JMP come file .jsl chiamando cartelle diverse, a volte JMP è in esecuzione in background anche dopo il codice exit(). Sto usando Windows 10.
Se lo rieseguo sullo stesso bloccato sui file JMP, funziona bene e viene fuori.
È a causa del problema di Windows 10 o perché JMP non è in grado di gestire 100 o più istanze alla volta?
Grazie.
Se ho capito bene, hai più di 100 istanze di JMP in esecuzione contemporaneamente. Sospetto che stiano utilizzando alcune risorse (forse memoria, o handle di file o ...) e che JMP o Windows abbiano difficoltà a riprendersi da un errore.
Suggerirei di modificare il codice che avvia le istanze JMP per limitare il numero in esecuzione contemporaneamente. Non so quale sarà il numero ottimale per la velocità, ma immagino meno di 16 su un desktop tipico.
Traccia una serie di file .jrn, .png e .txt nella cartella specifica e mostra un file .txt completato e si chiude.
Nella finestra dell'hacker del processo, JMP è ancora aperto per alcuni casi in cui ho dovuto chiuderlo manualmente.
Se lo eseguo di nuovo, quando il numero di istanze è inferiore, funziona correttamente e non vedo alcun JMP bloccato.
Ecco perché mi chiedevo se quando esegui più istanze, l'utilizzo di wait () sarà effettivamente d'aiuto? In tal caso, quando e dove dovrei usare wait ()? Eventuali problemi noti con l'interazione di qualche altro programma con JMP in Windows 10?
Applicazione: jmp.exe
Versione quadro: v4.0.30319
Descrizione: l'applicazione ha richiesto la terminazione del processo tramite System.Environment.FailFast(string message).
Messaggio: errore di sistema irreversibile.
Pila:
in System.Environment.FailFast(System.String)
in System.Windows.Controls.WebBrowser.TabIntoCore(System.Windows.Input.TraversalRequest)
in System.Windows.Controls.WebBrowser.OnLoadCompleted(System.Windows.Navigation.NavigationEventArgs)
in MS.Internal.Controls.WebBrowserEvent.DocumentComplete(System.Object, System.Object ByRef)
in System.RuntimeMethodHandle.InvokeMethod(System.Object, System.Object[], System.Signature, Boolean)
in System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(System.Object, System.Object[], System.Object[])
in System.Reflection.RuntimeMethodInfo.Invoke(System.Object, System.Reflection.BindingFlags, System.Reflection.Binder, System.Object[], System.Globalization.CultureInfo)
in MS.Win32.UnsafeNativeMethods+IWebBrowser2.Navigate2(System.Object ByRef, System.Object ByRef, System.Object ByRef, System.Object ByRef, System.Object ByRef)
in MS.Win32.UnsafeNativeMethods+IWebBrowser2.Navigate2(System.Object ByRef, System.Object ByRef, System.Object ByRef, System.Object ByRef, System.Object ByRef)
in System.Windows.Controls.WebBrowser.DoNavigate(System.Uri, System.Object ByRef, System.Object ByRef, System.Object ByRef, Boolean)
su WinHost.TipView.showCurrentTip()
su WinHost.TipView..ctor()
in .WinHost.newTipView()
su WinHost.WpfApp.processPendingIdleRequests()
su WinHost.WpfApp.doIdleTimeProcessing()
in System.RuntimeMethodHandle.InvokeMethod(System.Object, System.Object[], System.Signature, Boolean)
in System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(System.Object, System.Object[], System.Object[])
in System.Delegate.DynamicInvokeImpl(System.Object[])
in System.Windows.Threading.ExceptionWrapper.InternalRealCall(System.Delegate, System.Object, Int32)
in System.Windows.Threading.ExceptionWrapper.TryCatchWhen(System.Object, System.Delegate, System.Object, Int32, System.Delegate)
in System.Windows.Threading.DispatcherOperation.InvokeImpl()
in System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean)
in System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean)
in System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object)
in MS.Internal.CulturePreservingExecutionContext.Run(MS.Internal.CulturePreservingExecutionContext, System.Threading.ContextCallback, System.Object)
in System.Windows.Threading.DispatcherOperation.Invoke()
in System.Windows.Threading.Dispatcher.ProcessQueue()
in System.Windows.Threading.Dispatcher.WndProcHook(IntPtr, Int32, IntPtr, IntPtr, Boolean ByRef)
in MS.Win32.HwndWrapper.WndProc(IntPtr, Int32, IntPtr, IntPtr, Boolean ByRef)
in MS.Win32.HwndSubclass.DispatcherCallbackOperation(System.Object)
in System.Windows.Threading.ExceptionWrapper.InternalRealCall(System.Delegate, System.Object, Int32)
in System.Windows.Threading.ExceptionWrapper.TryCatchWhen(System.Object, System.Delegate, System.Object, Int32, System.Delegate)
in System.Windows.Threading.Dispatcher.LegacyInvokeImpl(System.Windows.Threading.DispatcherPriority, System.TimeSpan, System.Delegate, System.Object, Int32)
in MS.Win32.HwndSubclass.SubclassWndProc(IntPtr, Int32, IntPtr, IntPtr)
in MS.Win32.UnsafeNativeMethods.DispatchMessage(System.Windows.Interop.MSG ByRef)
in MS.Win32.UnsafeNativeMethods.DispatchMessage(System.Windows.Interop.MSG ByRef)
in System.Windows.Threading.Dispatcher.PushFrameImpl(System.Windows.Threading.DispatcherFrame)
in System.Windows.Application.RunDispatcher(System.Object)
in System.Windows.Application.RunInternal(System.Windows.Window)
su WinHost.WpfApp.Run()
Cosa fa il tuo JSL? Come fai a sapere che la funzione di uscita è stata chiamata ma l'istanza JMP è ancora in esecuzione? C'è qualcosa nella finestra del registro?
JMP è basato sulla memoria.Se hai 100 istanze contemporaneamente, avrai bisogno di 100 volte (per istanza di RAM).A seconda dei dati, sarebbe un minimo di 12 GB su un sistema a 64 bit.L'impronta può variare tra i sistemi operativi, quindi è possibile che tu ne stia utilizzando di più su Windows 10?Quanta memoria hai?Che versione di Windows 10 stai usando?
Grazie,
Brian Corcoran
Sviluppo JMP