2016-11-16 23 views
2

私はこの実装がスレッドセーフであるという確認を探しています。 WriteLogメソッドで内部的にスレッドセーフで使用するstatic .Net EventLog.WriteEntryメソッドがあるかどうかについての情報は見つかりません。EventLogライターはスレッドセーフです

スレッドセーフであるために必要なコンテキストはこれです。私は彼らが同じログライターのインスタンスを共有する3つのスレッドがあります。それらはすべて同じイベントログに書き込まれます。ソース - ソースは変更できません。

スレッドにアクセスする別のスレッドから同期を外すためのメンバ変数はありません。そのため、スレッドセーフであるかどうかは、EventLog.WriteEntryメソッド自体がスレッドセーフであるかどうかに基づいています。

誰かがこれを確認できるかどうかは分かります。どうもありがとう。

public class EventLogWriter : ILogWriter 
{ 
    private string EventLogSourceName; 
    public EventLogWriter() { EventLogSourceName = System.Configuration.ConfigurationManager.AppSettings["CustomEventLogSourceName"]; } 
    public EventLogWriter(string eventLogSourceName) { EventLogSourceName = eventLogSourceName; } 

    // ILogWriter interface method 
    public void WriteLog(string content, LogType logType) 
    { 
     // maps from our logType to the event log type 
     EventLogEntryType eventLogType = GetEventLogType(logType); 
     EventLog.WriteEntry(this.EventLogSourceName, content.ToString(), eventLogType, 0, (short)logType); 
    } 

    protected EventLogEntryType GetEventLogType(LogType logType) 
    { 
     EventLogEntryType eventLogType; 
     switch (logType) 
     { 
      case LogType.UnhandledException: 
       eventLogType = EventLogEntryType.Error; 
       break; 
      case LogType.HandledException: 
       eventLogType = EventLogEntryType.Warning; 
       break; 
      case LogType.Warning: 
       eventLogType = EventLogEntryType.Warning; 
       break; 
      case LogType.Information: 
       eventLogType = EventLogEntryType.Information; 
       break; 
      case LogType.Verbose: 
       eventLogType = EventLogEntryType.Information; 
       break; 
      default: 
       eventLogType = EventLogEntryType.Error; 
       break; 
     } 
     return eventLogType; 
    } 
} 

答えて

1

あなたがEventLogクラスのドキュメントを読んでいる場合、あなたは一番下にこのノートを見つけることができます:このタイプの

(Visual BasicではShared)すべてのパブリックstaticメンバーは、スレッドセーフです。どのインスタンスメンバーもスレッドセーフであるとは限りません。

+0

ああ、完璧です。迅速な返信ありがとうございます。私はWriteLogメソッドのページを検索し、EventLogクラスのレベルに上がるとは思わなかった。 – Bunjy

関連する問題