0

誰かが提案してくれたことに感謝し、事前に感謝したいと思います。

したがって、私の問題は、C# で作成された DLL があることです。DLL は、ユーザーのマシン上で一連のアクションを実行します。各ステップが実行された後に DLL にロギング タイプの機能を追加し、C# EXE の出力ウィンドウにステップを表示したいと思います (コードをコンパイルしたときに Visual Studio がどのように見えるかのようなものです)。

DLL は、UI EXE アプリケーションで参照されます。

- 私の C# EXE はユーザー インターフェイスです (今のところ、DLL からの出力を表示したいリッチ テキスト ボックス ウィンドウがあります) - 私の DLL は、指定されたシステム リフレクションを使用して EXE から呼び出されます。メソッドの各ステップが実行されるときに、実行したいDLLのexactedメソッドに、文字列を送信する方法、またはEXE出力ウィンドウに新しいデータがあることを知らせて表示する方法が必要です。

これを行う最善の方法は何ですか?いくつか考えてみましたが、あまり良くないようです。出力をランダムなテキスト ファイルに保存し、EXE で同じファイルを参照すると、ロックの問題が発生する可能性があります。これは私が考えたアイデアの一例ですが、これを行うためのより良い方法があることはわかっています。

私はすべてを知っているわけではなく、この質問から何かを学びたいと思っています。私は自分でいくつかの調査を行いましたが、答えは明確ではありませんでした。私は C# の専門家ではありませんが、いつかなりたいと思っています :)

4

2 に答える 2

1

これは、あなたが探していることを行うために私が使用したものです。 http://wintrace.codeplex.com/releases/view/57038

"GridViewTraceListner" dll を参照します。 Window フォームを作成し、データグリッド "dgvTraceView" を追加し、ラベル "lblCounter" を追加し、ボタン "button1" を追加します。

次に、フォームの読み込みに次を追加します。

TraceListener trlistener = new GridViewTraceListener.GridViewTraceListener
                                 (dgvTraceView, lblCounter);
Trace.Listeners.Add(trlistener);

ボタン クリック イベントで、次のようなものを追加します。

Logger.Log("MyTest"); // this is a method in the external dll.

今、あなたの「外部」DLLとこのようなものに。

public static void Log(string text)
{
    ConsoleTraceListener listener = new ConsoleTraceListener();
    Trace.Listeners.Add(listener);
    Trace.WriteLine(text);
    Trace.Listeners.Remove(listener);
    Trace.Close();
}
于 2013-11-13T21:03:32.787 に答える