public void PerformActionAsync(long pObj, long AddressOfSubroutine)
{
long result = 0;
//Call one.
DispCallFunc(new IntPtr(pObj), new IntPtr(AddressOfSubroutine), CALLCONV.CC_STDCALL, VarEnum.VT_EMPTY, 0, IntPtr.Zero, IntPtr.Zero, out result);
//Set up call two.
var waitforit = new Waiter {FunctionPtr = AddressOfSubroutine};
var test = new Thread(waitforit.PauseThenExecute);
test.Start();
}