move the following codes to class level rather than scoped at method level.
private test test1;
private test test2;
private Object thisLock = new Object();
Now you can access the test1 or test2 from anywhere, just check if they are null or not. Also use lock sequences.
public void ProcessingThreadForNextCall()
{
int iThreadId = CurrentThread.GetHashCode();
Trace("In the new thread " + iThreadId + " line = " + iResource);
test2= new test.ADXVoice()
lock (thisLock)
{
if(test1 !=null)
test1.DisconnectCall();
}
}