/// <summary>
 /// 订阅服务
 /// </summary>
 /// <param name="options">订阅选项</param>
 public void Subscribe(SubscribeOptions options, params string[] subscribeTypes)
 {
     var callback = OperationContext.Current.GetCallbackChannel<IStatusListener>();
     var endPoint = OperationContext.Current.RemoteEndPoint;
     MessageCenter.Instance.AddListener(new MessageListener(endPoint, callback, options, subscribeTypes));
 }
Пример #2
0
        private void button1_Click(object sender, EventArgs e)
        {
            try
            {
                if (button1.Tag == null)
                {
                    if (defaultNode == null)
                    {
                        MessageBox.Show("请选择监控节点!", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        return;
                    }

                    if (checkBox3.Checked)
                    {
                        var timer = Convert.ToInt32(numericUpDown2.Value);
                        var url = ConfigurationManager.AppSettings["ServerMonitorUrl"];

                        if (!string.IsNullOrEmpty(url))
                        {
                            if (url.IndexOf('?') > 0)
                                url = url + "&timer=" + timer;
                            else
                                url = url + "?timer=" + timer;
                            webBrowser2.Navigate(url);
                        }
                    }

                    var listener = new StatusListener(tabControl1, listConnect, listTimeout, listError,
                        Convert.ToInt32(numericUpDown3.Value), Convert.ToInt32(numericUpDown5.Value),
                        Convert.ToInt32(numericUpDown1.Value), Convert.ToInt32(numericUpDown4.Value), checkBox4.Checked);

                    service = CastleFactory.Create().GetChannel<IStatusService>(defaultNode, listener);

                    //var services = service.GetServiceList();

                    var options = new SubscribeOptions
                    {
                        PushCallError = checkBox1.Checked,
                        PushCallTimeout = checkBox2.Checked,
                        PushServerStatus = checkBox3.Checked,
                        PushClientConnect = true,
                        CallTimeout = Convert.ToDouble(numericUpDown1.Value) / 1000,
                        CallRowCount = Convert.ToInt32(numericUpDown5.Value),
                        ServerStatusTimer = Convert.ToInt32(numericUpDown2.Value)
                    };

                    try
                    {
                        service.Subscribe(options);

                        button1.Text = "停止监控";
                        button1.Tag = label1.Text;
                        label1.Text = "正在进行监控...";

                        checkBox1.Enabled = false;
                        checkBox2.Enabled = false;
                        checkBox3.Enabled = false;
                        comboBox1.Enabled = false;

                        numericUpDown1.Enabled = checkBox2.Enabled && checkBox2.Checked;
                        numericUpDown2.Enabled = checkBox3.Enabled && checkBox3.Checked;

                        checkBox4.Enabled = false;
                        numericUpDown3.Enabled = false;
                        numericUpDown4.Enabled = false;
                        numericUpDown5.Enabled = false;
                        //button1.Enabled = false;
                    }
                    catch (Exception ex)
                    {
                        SimpleLog.Instance.WriteLogForDir("Client", ex);
                        MessageBox.Show(ex.Message, "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }
                }
                else
                {
                    if (sender != null)
                    {
                        if (MessageBox.Show("确定停止监控吗?", "系统提示",
                            MessageBoxButtons.OKCancel, MessageBoxIcon.Question) == DialogResult.Cancel) return;
                    }

                    try
                    {
                        service.Unsubscribe();
                    }
                    catch (Exception ex)
                    {
                        SimpleLog.Instance.WriteLogForDir("Client", ex);
                        MessageBox.Show(ex.Message, "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }

                    checkedListBox1.Items.Clear();
                    checkedListBox2.Items.Clear();

                    label1.Text = button1.Tag.ToString();
                    button1.Text = "开始监控";
                    button1.Tag = null;

                    //listConnect.Items.Clear();
                    //listError.Items.Clear();
                    //listTimeout.Items.Clear();

                    //listConnect.Invalidate();
                    //listError.Invalidate();
                    //listTimeout.Invalidate();

                    tabPage1.Text = "连接信息" + (listConnect.Items.Count == 0 ? "" : "(" + listConnect.Items.Count + ")");
                    tabPage2.Text = "警告信息" + (listTimeout.Items.Count == 0 ? "" : "(" + listTimeout.Items.Count + ")");
                    tabPage3.Text = "异常信息" + (listError.Items.Count == 0 ? "" : "(" + listError.Items.Count + ")");

                    checkBox1.Enabled = true;
                    checkBox2.Enabled = true;
                    checkBox3.Enabled = true;
                    comboBox1.Enabled = true;

                    numericUpDown1.Enabled = checkBox2.Enabled && checkBox2.Checked;
                    numericUpDown2.Enabled = checkBox3.Enabled && checkBox3.Checked;

                    try { webBrowser1.Document.GetElementsByTagName("body")[0].InnerHtml = string.Empty; }
                    catch { }

                    checkBox4.Enabled = true;
                    numericUpDown3.Enabled = true;
                    numericUpDown4.Enabled = true;
                    numericUpDown5.Enabled = true;
                    //button1.Enabled = true;
                }
            }
            catch (Exception ex)
            {
                SimpleLog.Instance.WriteLogForDir("Client", ex);
                MessageBox.Show(ex.Message, "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }