1

MSDN のドキュメントによると、Write-event は int および string パラメータ タイプのみをサポートしています。ユーザーが作成した ct を Write-event に渡したいのですが、この機能を取得するにはどうすればよいですか? この機能を実現するための適切なシリアライザーは何でしょうか?

4

2 に答える 2

0

Windows 10 (Win7/8.1 にもバックポート) では、.Net 4.6 以降のリッチ ペイロード データがサポートされています。

// define a ‘plain old data’ class 
    [EventData]
    class SimpleData {
        public string Name { get; set; }
        public int Address { get; set; }
    }

    [EventSource(Name = "Samples-EventSourceDemos-RuntimeDemo")]
    public sealed class RuntimeDemoEventSource : EventSource
    {
        // define the singleton instance of the event source
        public static RuntimeDemoEventSource Log = new RuntimeDemoEventSource();

        // Rich payloads only work when the self-describing format 
        private RuntimeDemoEventSource() : base(EventSourceSettings.EtwSelfDescribingEventFormat) { }

        // define a new event. 
        public void LogSimpleData(string message, SimpleData data) { WriteEvent(1, message, data); }
    }

RuntimeDemoEventSource.Log.LogSimpleData(
        "testMessage", 
        new SimpleData() { Name = "aName", Address = 234 });

詳細については、ブログとドキュメントを参照してください。

于 2015-12-09T05:08:04.807 に答える