Windows Service VS2013 プロジェクト テンプレートを使用してプロジェクトを作成しているときに、ツール ボックスからEventLogコンポーネントを追加した後、「Component Designer generated code」という名前の#regionが次のコードで満たされていることに気付きました。
private void InitializeComponent()
{
this.eventLog1 = new System.Diagnostics.EventLog();
((System.ComponentModel.ISupportInitialize)(this.eventLog1)).BeginInit();
//
// Service1
//
this.ServiceName = "Service1";
((System.ComponentModel.ISupportInitialize)(this.eventLog1)).EndInit();
}
私の質問は次のとおりです。次のような行を生成するデザイナーを追加する必要があります。
components.Add(this.eventLog1);
ラインの後
this.eventLog1 = new System.Diagnostics.EventLog();
? 次のようなメソッドが存在するという事実:
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
System.Diagnostics.EventLogがIDisposableインターフェイスを実装していることから、生成されたコードのデザイナーにそのような行を含める必要があると思います。それは大したことではなく、非常にまれなケース (たとえば、 MainメソッドでServicesBase派生インスタンスを汚すなど) で、その行の欠如がアプリのパフォーマンスに影響を与える可能性があることはわかっていますが、それでも私には意味がありません。そのようなDisposalメソッドの実装であり、次のような行を追加しないでください: components.Add(this.eventLog1); . 何かご意見は?