代码如下所示:
public class JobManager
{
public static void TrackExceptionCount(ref int exceptionCount)
{
Interlocked.Increment(ref exceptionCount);
}
//other helper methods
}
我将在其他地方调用此方法,例如:
private static int _exceptionCount;
JobManager.TrackExceptionCount(ref _exceptionCount);
我以为 Interlocked.Increment 会处理线程安全问题,对吧?
编辑:
我有多个这样的 Job 类:
class JobA
{
private static int _exceptionCount;
public void method1()
{
Task.Factory.Start(()=>{
try
{
//Some code
}
catch(exception ex)
{
JobManager.TrackExceptionCount(ref _exceptionCount);
}
});
}
public void method2()
{
Task.Factory.Start(()=>{
try
{
//Some code
}
catch(exception ex)
{
JobManager.TrackExceptionCount(ref _exceptionCount);
}
});
}
}
class JobB
{
private static int _exceptionCount;
public void method1()
{
Task.Factory.Start(()=>{
try
{
//Some code
}
catch(exception ex)
{
JobManager.TrackExceptionCount(ref _exceptionCount);
}
});
}
public void method2()
{
Task.Factory.Start(()=>{
try
{
//Some code
}
catch(exception ex)
{
JobManager.TrackExceptionCount(ref _exceptionCount);
}
});
}
}
我相信在 catch 块中直接调用 Interlocked.Increment 可能是更好的方法。
但仍然想知道 JobManager.TrackExceptionCount(ref _exceptionCount) 是否可能工作
谢谢。