Esempio n. 1
0
        void paletteWorker_DoOpenPalette(object sender, DoWorkEventArgs e)
        {
            try
            {
                IControlPalette p = e.Argument as IControlPalette;
                if (p == null)
                {
                    throw new ArgumentException("Argument to worker must be an IControlPalette");
                }

                p.Start();

                e.Result = p;
            }
            catch (Exception ex)
            {
                e.Result = new object[] { ex, e.Argument };
            }
        }
Esempio n. 2
0
        private void StreamViewer_StartControl(object sender, SourceControlTypeEventArgs e)
        {
            StreamViewerControl svc = sender as StreamViewerControl;

            if (svc == null)
            {
                return;
            }

            IControlPalette p = null;

            switch (e.ControlType)
            {
            case SourceControlTypes.PTZ:
                p = new PTZPalette();
                break;

            case SourceControlTypes.Microwave:
                p = new MicrowavePalette();
                break;

            default:
                return;
            }

            svc.Active            = true;
            p.StreamViewerControl = svc;

            if (!PaletteWorker.IsBusy)
            {
                PaletteWorker.RunWorkerAsync(p);
            }
            else
            {
                FCMessageBox.Show("Please wait", "Another peripheral control is in the process of starting." + Environment.NewLine + "Please wait for it to finish.", this);
                svc.ControlState[e.ControlType] = SourceControlTypeState.Inactive;
            }
        }
Esempio n. 3
0
        void paletteWorker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
        {
            if (this.InvokeRequired)
            {
                this.Invoke(new RunWorkerCompletedEventHandler(paletteWorker_RunWorkerCompleted), sender, e);
                return;
            }

            try
            {
                if (e.Error != null)
                {
                    throw e.Error;
                }

                IControlPalette p = e.Result as IControlPalette;
                if (p != null)
                {
                    CurrentPalette = p;
                    if (p.StreamViewerControl.FullScreen)
                    {
                        Stream_FullScreenClicked(p.StreamViewerControl, new EventArgs());
                    }
                    p.StreamViewerControl.Active = true;
                    p.Closed += new EventHandler <SourceControlTypeEventArgs>(StreamViewer_StopControl);

                    p.StreamViewerControl.ControlState[p.ControlType] = SourceControlTypeState.Active;
                }
                else
                {
                    //try to unwind the error, but if it gets crazy, just throw it out
                    object[] errorResult = (object[])e.Result;
                    if (errorResult != null)
                    {
                        if (errorResult.Length == 2)
                        {
                            Exception error = (Exception)errorResult[0];
                            p = (IControlPalette)errorResult[1];

                            p.StreamViewerControl.ControlState[p.ControlType] = SourceControlTypeState.Inactive;

                            string msg = error.Message;
                            //get fault specific message if available
                            string fcMsg = (error.InnerException != null) ? error.InnerException.GetFaultInnerDetailMessage() : "";
                            if (!string.IsNullOrEmpty(fcMsg))
                            {
                                msg += Environment.NewLine + Environment.NewLine + fcMsg;
                            }

                            msg += Environment.NewLine + Environment.NewLine + "Message from:" + Environment.NewLine +
                                   p.StreamViewerControl.CurrentConnection.GetDescription();

                            FCMessageBox.Show("Cannot access " + p.ControlType.ToString() + " control", msg, this);
                            ErrorLogger.DumpToDebug(error);
                        }
                    }
                }
            }
            catch (Exception ex)    //something terrible has happened...
            {
                FCMessageBox.Show("Cannot access control", ex.Message, this);
                ErrorLogger.DumpToDebug(ex);
            }
        }