示例#1
0
    static void ProcessRequestHandler <I, O>(GetProcessInstance <I, O> getProcessInstance, object sender, ProcessRequestEventArgs <I, O> args)
    {
        var process = getProcessInstance();

        if (args.Parent != null)
        {
            ProcessExitCallback forceChildExit = (s, e) => process.ForceExit();
            ProcessExitCallback detachChild    = (s, e) => {
                args.Parent.OnExit -= forceChildExit;
                Debug.Log("Detached child: " + process);
            };
            process.OnExit     += detachChild;
            args.Parent.OnExit += forceChildExit;
        }

        if (args.SetChild != null)
        {
            args.SetChild(process);
        }

        ProcessExitCallback castCallback = (s, e) => args.Callback(s, (O)e);

        process.OnExit += castCallback;

        //Debug.Log("Started: " + process);
        //process.OnExit += (s, e) => Debug.Log("Ended: " + process);

        process.Initialize(args.Data);
    }
示例#2
0
 public static void Link <I, O>(ref ProcessRequestHandler <I, O> requester, GetProcessInstance <I, O> getProcess)
 {
     requester = (s, e) => ProcessRequestHandler(getProcess, s, (ProcessRequestEventArgs <I, O>)e);
 }