Example #1
0
 private void Exec(object state)
 {
     if (DateTime.Now.Minute == ExecTime.Minute)
     {
         DoEvent?.Invoke();
     }
 }
Example #2
0
        /// <summary>
        /// イベント発生用関数。呼ばれたら、DoEventに登録されているメソッドを呼び出す。
        /// </summary>
        /// <param name="eventName"></param>
        public void Clicked(string eventName)
        {
            Console.WriteLine("クリック イベント発生");

            // C# 6.0から null条件演算子と呼ばれる。
            // 対象がnullかどうかで振る舞いが変わる。
            // Invokeが何かは自分で調べろ。
            DoEvent?.Invoke(eventName);
        }
Example #3
0
        /// <summary>
        /// 重新选型事件
        /// </summary>
        private void DoMatchIndoor()
        {
            List <string> stateList = new List <string>();
            MatchIndoor   MatInd    = new MatchIndoor();

            try
            {
                ReselectedIndoorList = MatInd.DoRoomIndoorReselection(roomIndoorList, thisProject, outDBCool, outWBHeat, out stateList);
            }
            catch (Exception ex)
            {
                DoEvent BtnEnableFun1 = delegate()
                {
                    jclblError.Text    = ex.Message;
                    jclblError.Visible = true;
                    jcbtnClose.Enabled = true;
                };
                this.BeginInvoke(BtnEnableFun1);
                return;
            }
            //选型结果呈现,由主线程委托执行
            DoEvent BtnEnableFun = null;

            BtnEnableFun += delegate()
            {
                dtResult.Rows.Clear();
                foreach (string stateMsg in stateList)
                {
                    string[] arr      = stateMsg.Split(new string[] { "::" }, StringSplitOptions.RemoveEmptyEntries);
                    string   indoorNo = arr[0];
                    var      ent      = ReselectionResultList.Find(p => p.IndoorNo == indoorNo);
                    switch (arr[1])
                    {
                    case "Indoor_NoChange":
                        ent.Seccessful = true;
                        ent.Message    = Msg.MatchIndoor_OK;
                        break;

                    case "Indoor_ChangeModel":
                        ent.Seccessful = true;
                        RoomIndoor newRI = ReselectedIndoorList.Find(p => p.IndoorNO.ToString() == indoorNo);
                        string     msg   = "";
                        if (newRI != null)
                        {
                            msg = "=>" + newRI.IndoorFullName;
                        }
                        if (arr.Length > 2)
                        {
                            switch (arr[2])
                            {
                            case "Indoor_Unbinding":
                                msg += "; " + Msg.Indoor_Unbinding;
                                break;

                            case "Indoor_ResetAccessories":
                                msg += "; " + Msg.Indoor_ResetAccessories;
                                break;
                            }
                        }
                        ent.Message = msg;
                        break;

                    default:
                        if (ent.Seccessful)
                        {
                            ent.Message    = "";
                            ent.Seccessful = false;
                        }
                        else
                        {
                            if (!string.IsNullOrEmpty(ent.Message))
                            {
                                ent.Message += ";";
                            }
                        }
                        switch (arr[1])
                        {
                        case "IND_NOTMATCH":
                            ent.Message += Msg.IND_NOTMATCH;
                            break;

                        case "DATA_EXCEED":
                            ent.Message += Msg.WARNING_DATA_EXCEED;
                            break;

                        case "IND_NOTMEET_COOLING":
                            ent.Message += Msg.IND_NOTMEET_COOLING;
                            break;

                        case "IND_NOTMEET_HEATING":
                            ent.Message += Msg.IND_NOTMEET_HEATING;
                            break;

                        case "IND_NOTMEET_FA":
                            ent.Message += Msg.IND_NOTMEET_FA;
                            break;
                        }
                        break;
                    }
                }

                foreach (var ent in ReselectionResultList)
                {
                    dtResult.Rows.Add(new object[] { ent.Name, ent.Message });
                }
                jcbtnClose.Enabled = true;
                jcbtnOK.Enabled    = true;
            };
            this.BeginInvoke(BtnEnableFun);
        }