2014-02-14 86 views
0

我的項目有很多類。每個類都使用TraceSource進行記錄。我不想在記錄時使用TraceEventCache。基本上,答案是我們可以告訴列表員不要使用TraceOptions(CallStack,ProcessID等)編寫TraceEventCache。這意味着TraceSource已經有了TraceEventCache。所以我的問題是TraceSource類的TraceData和TraceEvent方法是否爲每次調用創建TraceEventCache?或者只是由每個線程的框架創建的單個對象,並只在TraceSource類中使用。自定義TraceSource以避免創建TraceEventCache

回答

1

你的問題取決於你如何看待TraceSource類的寫法。比猜測更好,你可以檢查參考源代碼,既有Microsoft也有Mono's

總之,在那裏你可以看到這個被稱爲每次調用跟蹤(...)

TraceEventCache manager = new TraceEventCache(); 

據我所知道的,唯一的辦法中,它像一個高速緩存是調用堆棧(以及其他一些)屬性延遲確定它們的值,直到調用,如果調用兩次,則返回本地變量的值。這是因爲像CallStack這樣的東西速度很慢。否則,TraceEventCache只是一些無聊的屬性。它不是像ASP.NET內部緩存那樣的緩存。

爲了提高性能,只是不要告訴你的任何跟蹤監聽器輸出調用堆棧或其他任何可能很慢的東西。

相關問題