/// <summary> /// Creates a proxy for an actor component object and places it in an existing actor /// </summary> internal CreatorInterfaceInvocationHandler(ObjectCreator<IActorComponent> creator, IActor rootObject, ProxyFactory proxyFactory) { // We need to lock on the root when using an existing actor ThreadPool.QueueUserWorkItem( delegate { Hooking.ActorCallWrapper(() => { IActorComponent newObject = creator(); ActorInterfaceInvocationHandler temp = new ActorInterfaceInvocationHandler(newObject, rootObject, proxyFactory); m_RealInvocationHandler = temp; m_FinishedEvent.Set(); }); }); }
/// <summary> /// Creates an interceptor for an object that doesn't exist yet. /// /// This will trigger its asynchronous construction. /// </summary> public CreatorInterfaceInvocationHandler(ObjectCreator<IActor> creator, ProxyFactory proxyFactory) { ThreadPool.QueueUserWorkItem( delegate { Hooking.ActorCallWrapper( () => { IActor newObject = creator(); ActorInterfaceInvocationHandler temp = new ActorInterfaceInvocationHandler(newObject, newObject, proxyFactory); m_RealInvocationHandler = temp; m_FinishedEvent.Set(); }); }); }