비동기 쓰레드를 여러개 만들어 사용하다보면서 어느 한 .dll(동적라이브러리)의 특정 함수를 동시에 접근하면서 오류를 발생시키는 버그가 있었다. 이를 해결하기 위해 여러 쓰레드에서 특정 함수를 호출할때 해당 함수가 이미 동작하고 있다면 대기하도록 하는 Lock 기능을 이용해 해결하였다.
private object lockObject = new object();
public void FFT2DFunction(var A, var B, int a)
{
lock (lockObject) //
{
SomeDLL.Function(A, out B, (SomeEnum)a);
}
}