public void GetFPS(double value)
        {
            //Go through the list of connections and call their callback function
            subscribers.ForEach(delegate(IFPSCallback callback)
            {
                if (((ICommunicationObject)callback).State == CommunicationState.Opened)
                {
                    Console.WriteLine("FPS: " + value.ToString());
                    FrameRateStatus status = new FrameRateStatus(value);
                    callback.ApplicationFPS(status);

                    // Just for test, fast code
                    // Relaunch Application
                    if (status.FPSStatus == Status.Critical)
                    {
                        if (!appWatch.IsRunning)
                        {
                            appWatch.Reset();
                            appWatch.Start();
                        }
                        if (appWatch.Elapsed.TotalMilliseconds >= appCriticalTimespan)
                        {
                            appWatch.Reset();
                            // kill
                            if (!process.HasExited)
                            {
                                process.Kill();
                            }
                        }
                    }
                    else
                    {
                        if (appWatch.IsRunning)
                        {
                            appWatch.Reset();
                        }
                    }
                }
                else
                {
                    subscribers.Remove(callback);
                }
            });
        }
 public void ApplicationFPS(FrameRateStatus fpsStatus)
 {
 }