こんにちは、みんな、
異なるフォルダーを呼び出す .jsl ファイルとして JMP の複数のインスタンスを作成すると、exit() コードの後でも JMP がバックグラウンドで実行されることがあります。 Windows 10を使用しています。
JMP ファイルでスタックした同じファイルで再実行すると、正常に動作し、問題が解決します。
Windows 10 の問題が原因ですか、それとも JMP が一度に 100 以上のインスタンスを処理できないためですか?
ありがとう。
私の理解が正しければ、100 個以上の JMP インスタンスが同時に実行されているということになります。 何らかのリソース (おそらくメモリ、またはファイル ハンドルなど) を使い果たしており、JMP または Windows がエラーから回復するのに苦労しているのではないかと思います。
JMP インスタンスを開始するコードを変更して、同時に実行される数を制限することをお勧めします。 速度の最適な数値はわかりませんが、一般的なデスクトップでは 16 未満ではないかと思います。
特定のフォルダー内の .jrn、.png、および .txt ファイルの束をプロットし、完成した .txt ファイルを表示して終了します。
プロセス ハッカー ウィンドウでは、JMP がまだ開いたままになっているため、手動で閉じる必要がありました。
インスタンスの数が少ないときに再度実行すると、正常に動作し、JMP がスタックすることはありません。
だからこそ、複数のインスタンスを実行しているときに wait() を使用することが実際に役立つのかどうか疑問に思ったのです。 その場合、いつ、どこで wait() を使用すればよいでしょうか? Windows 10 での他のプログラムと JMP の相互作用に関する既知の問題はありますか?
アプリケーション: jmp.exe
フレームワークのバージョン: v4.0.30319
説明: アプリケーションは System.Environment.FailFast(string message) を通じてプロセスの終了を要求しました。
メッセージ: 回復できないシステム エラー。
スタック:
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、ブール 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() で
あなたのJSLは何をしますか? exit 関数が呼び出されたのに、JMP インスタンスがまだ実行中であることはどのようにしてわかりますか? ログウィンドウに何かありますか?
JMP はメモリベースです。同時に 100 個のインスタンスを起動している場合は、(インスタンスごとに) 100 倍の RAM が必要になります。データによっては、64 ビット システムでは最低 12 GB になります。フットプリントは OS によって異なる可能性があるため、Windows 10 でより多く使用している可能性がありますか?どれくらいのメモリがありますか?Windows 10 のどのバージョンを使用していますか?
ありがとう、
ブライアン・コーコラン
JMP開発