問題タブ [system.diagnostics]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
.net - IOバウンドスレッドを中断する方法
System.Diagnostic.Processを開いて、プロセスからstdoutを読み取りますが、一定の経過時間後に中断できるようにしたいと思います。
スレッドはReadToEnd()メソッドにあるため、これは機能しません。ReadメソッドのEOFになることを期待して、メインスレッドからストリームを閉じようとしましたが、それも機能しませんでした。
c# - Windows 7 で System.Diagnostics.Process を起動する際の問題
.NET 3.51 からアプリケーション (オペレーティング システム、マイ アプリケーション、および起動するアプリケーションはすべて 32 ビット) を起動しようとしています。
プロセスを起動するコードは他のアプリケーションにも使用されますが、頭を悩ませているものがあります。アプリケーションのアイコンを「ダブルクリック」すると、期待どおりに動作します。つまり、コンピュータ内のアプリケーションとして正常に動作します。.exe を直接ダブルクリックしても機能します。
オペレーティング システムは Windows 7 32 ビット (Home および/または Professional) です。
問題を回避するために、.NET アプリケーションは x86 でコンパイルされています。
「プロセス」を起動するコードは、私たちが作成した DLL (これも 32 ビット) 内にあります。基本的には、コード全体で使用する一般的なメソッド、関数、および全体にわたっていくつかの「共通コード」を保持する単純な DLL です。これらのメソッドの 1 つが次のようになります。
誰がこのメソッドを作成したのかはわかりませんが、さまざまなアプリケーションで約 6 年間動作しているため、「問題ない」と思います。ただし、その議論を通過したときに起動しないソフトウェアを持っている顧客がいます。
引数は次のとおりです。
- プロセスは、単純な「new Process();」で作成された System.Diagnostics.Process です</li>
- pathは、.exe「c:/path/to/my.exe」へのフル パスです。
- enableRaisingEventsが false
- windowStyleは最大化されています(ただし、他のものを試しました)。
それはくだらない MessageBox を与えます…私は喜んでそれを不滅にしました。それはスペイン語ですが、翻訳は簡単なはずです:
それは言います:
アプリケーション エラー プログラム (0x0eedfade) で予期しない例外が発生しました …
0x0eedfade をグーグルで検索すると、恐ろしく見える奇妙な結果が得られますが、実際には、起動しようとしている .exe に移動してダブルクリックすると、完全に機能します。
記録のために : 他のもの (例: Notepad.exe、Adobe Acrobat Reader) を起動しようとすると、動作しますが、 Firefox が開かず、エラーも表示されません。
この「一部は機能し、一部は機能しない」という動作から、Windows 7 のセキュリティ メカニズムまたは同様の、私が知らない問題があるのではないかと考えてしまいます。
私は何が欠けているか、間違っていますか?
更新:わかりました。ソフトウェアのコピーを入手しました。面倒なソフトウェアですが、機能します。デバッグできるようになったので、FireUpProcess
メソッドでプログラムを起動するとエラーが発生することがわかりました。
提案どおり、WorkingDirectory コードを追加しましたが、コードは次のとおりです。
つまり、「ddip.dll が見つからないため、プログラムを開始できませんでした… bla bla を再インストールしてみてください」ということです。
問題は、コマンド ラインから同じ @path を実行すると、プログラムが完全に開くということです。
これにより、プログラムが開きます。「プログラム」メニューにある「ショートカット」をクリックしても同じことが起こります。そのショートカットにはパラメーターはありません。実行可能ファイルへの単純な呼び出しです。
質問は今です:私のコードと他の方法の違いは何ですか?
私のプロセスが開始されない原因は何か違うはずです。
何か案は?
更新と解決策
以下の回答のいずれかを使用して機能させました。解決策を直接教えてくれる人は誰もいなかったことが判明しましたが、彼らは皆、あちこちで良いアイデアをくれました。
アプリケーションにアプリ マニフェストを追加しました( vista の時代からあるはずでしたが、なぜ最初の場所になかったのかわかりません)。VStudio 2008 add file -> app manifest を使用して追加したアプリ マニフェスト。
その中で、これがあることを確認しました:
管理者などは必要ありませんが、明らかに Vista/7 はそれを知る必要があります。
それが追加された後、プロセスは正しく起動されます。
注: UseShellExecute はデフォルトでtrueです(一部の人が示唆しているように)。それが必要な場合は、明示的に false に変更する必要があります。
c# - C# Win アプリケーションで Windows の電卓を開きますか?
次のコードで Windows Calculator を開くことができることを知っています。
しかし、私は自分の C# Win アプリケーションでそれを開きたいです。つまり、独立したウィンドウで開きたくないので、自分のウィンドウで開きたいのです。
どうすればできますか?
azure - Windows AzureのSystem.Diagnostics.Trace.WriteLine
Azure 開発で System.Diagnostics.Trace.WriteLine を使用する場合、その情報はどのくらいの期間保存されますか。worker ロールまたは web ロールがリサイクルされると、それは消去されますか?
c# - 実行中のプロセスごとにC#でCPU使用率を取得する方法
System.Diagnostics.Process.GetProcesses()を使用してプロセスリストを取得します。各プロセスのTotalProcessorTimeプロパティが見つかりました。これはTimeSpanです。
しかし、CPU使用率の相対値を取得する方法、つまり、実行中のプロセスごとに合計CPU使用率の%が必要です。
c# - バックグラウンドスレッドのTextWriterTraceListener
TraceSwitch機能を使用して、内部で起こっていることのトレースを出力できるようにするサードパーティのコンポーネントがあります。残念ながら、消費者(ファイルへの出力)としてTextWriterTraceListenerを使用してスイッチを冗長モードで実行すると、アプリケーションの速度が大幅に低下します。
トレースされたデータがすぐに書き込まれることは重要ではないので、優先度の低いスレッドにデータを書き込む方法はありますか?おそらくタスク?
編集
さらに調査すると、リスナーを接続せずにスイッチをオンにするだけで速度が低下するようです。コンポーネントプロバイダーを入手します。
それでも答えを聞くのは面白いでしょう。
c# - TextWriterTraceListener が機能しない
構成ファイル:
コード:
コソールウィンドウでテキストを見ることができます。ファイルは作成されますが、空です。Autoflush プロパティのようなものがどこかにあるのを覚えていますか?
.net - コード計測
コードを計測することはどれほど重要であり、コードの計測はコードの品質属性と見なされますか?
インストルメンテーションとは、トレース ステートメントなどの診断用のコードを配置し、必要に応じてパフォーマンス カウンターを使用することを意味します。
c# - System.Debug および System.Threading 参照エラー
エラー メッセージ 'ThreadState' は 'System.Threading.ThreadState' と 'System.Diagnostics.ThreadState' の間のあいまいな参照です
C# クラス .cs をデバッグしようとしていますが、コードのデバッグに Debug.Writeline を使用しています...
しかし、上記のエラーが発生しています!!
C# Code Classes をデバッグする別の方法はありますか? Console.Writeline() と Alert.Show と Message.Show を試しましたが、Web アプリケーションの C# クラスをデバッグする別の効果的な方法や、あいまいな参照を回避する方法が見つかりませんでした !!
c# - Lazy で予測可能な出力を作成する方法
私はいくつかの内部ロギング フレームワークに取り組んでおり、パフォーマンスのために、遅延してStackFrame
. StackFrame
これを使用して、ロギング フレームワーク外の最初のメソッドを取得したいと考えています。
私の最初のアイデアはこれでした:
しかし、これらの行を交換すると:
コール スタックが変更されるため、結果は予測できません。怠惰を維持しながら、クロージャーを介してローカルスコープ/フレームへのフックを取得する方法はありますか。
私が考えることができる唯一の解決策は、不明な方法で最初のフレームを検出するまで、StackTrace をステップ実行することです。
より良い解決策があることを本当に願っています。