別のクラスから呼び出しているいくつかの関数のリポジトリである静的クラスを作成しました。
public static class CommonStructures
{
public struct SendMailParameters
{
public string To { get; set; }
public string From { get; set; }
public string Subject { get; set; }
public string Body { get; set; }
public string Attachment { get; set; }
}
}
public static class CommonFunctions
{
private static readonly object LockObj = new object();
public static bool SendMail(SendMailParameters sendMailParam)
{
lock (LockObj)
{
try
{
//send mail
return true;
}
catch (Exception ex)
{
//some exception handling
return false;
}
}
}
private static readonly object LockObjCommonFunction2 = new object();
public static int CommonFunction2(int i)
{
lock (LockObjCommonFunction2)
{
int returnValue = 0;
try
{
//send operation
return returnValue;
}
catch (Exception ex)
{
//some exception handling
return returnValue;
}
}
}
}
質問 1: 2 番目のメソッド CommonFunction2 について、新しい静的ロック、つまりこの例の LockObjCommonFunction2 を使用しますか、それとも関数の先頭で定義された同じロック オブジェクト LockObj を再利用できますか。
質問 2: スレッド関連の問題につながる可能性のあるものはありますか、またはコードを改善して安全なスレッドにすることはできますか?
質問 3: 構造体の代わりに共通クラスを渡す際に問題はありますか?
よろしく、 MH