private void Exec(object state) { if (DateTime.Now.Minute == ExecTime.Minute) { DoEvent?.Invoke(); } }
/// <summary> /// イベント発生用関数。呼ばれたら、DoEventに登録されているメソッドを呼び出す。 /// </summary> /// <param name="eventName"></param> public void Clicked(string eventName) { Console.WriteLine("クリック イベント発生"); // C# 6.0から null条件演算子と呼ばれる。 // 対象がnullかどうかで振る舞いが変わる。 // Invokeが何かは自分で調べろ。 DoEvent?.Invoke(eventName); }
/// <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); }