複数のスレッドによって頻繁に呼び出される静的メソッドを含むユーティリティ クラスを開発しています。時間の経過とともにメモリ使用量が増加していることに気付いているため、メモリ リークが発生しているように思えます。
これらの静的メソッドに使用しているパターンの簡単な例を次に示します。
public static int CreateNewThing(int IDofSomeDBObjectHoldingInfoToCreateNewThing)
{
using(SomeDBContext context = new SomeDBContext(connectionString))
{
SomeDBObjectHoldingInfoToCreateNewThing createNewThingyInfo = context.SomeDBObjectsHoldingInfoToCreateNewThing.First(obj => obj.ID == IDofSomeDBObjectHoldingInfoToCreateNewThing);
// Do some stuff to create the new object
// Return the ID of the newly created thingy...
return theNewThingThatWasCreated.ID;
}
}
私の質問は、「using」ステートメントを使用するか、静的メソッド内で Dispose を直接呼び出すと、実際にメモリがクリアされるかどうかです。確かに、このアプリケーションの全体的なアーキテクチャや目的については述べていませんが、ここで最適なパターンを使用しているかどうかも疑問に思っています。.NET でスレッド セーフなユーティリティ クラスを作成するためのベスト プラクティスは何ですか?