public int CompareTo(TimeInfo other) { if (this._hour - other._hour > 0) return 1; else if (this._hour - other._hour == 0) { if (this._minute - other._minute > 0) return 1; else if (this._minute - other._minute == 0) return 0; else return -1; } else return -1; }
public void TaskStart() { try { _module = Constants.MSG_TASK; int num = 0; if (Task.RunMode == EnumRunMode.MultiLoop || Task.RunMode == EnumRunMode.SingleLoop) { SetMessageLn("开始执行循环任务..."); if (Task.RunMode == EnumRunMode.SingleLoop) { _singleloopfirst = true; } if (Task.Forbidden) { num = DurationMinute(new TimeInfo(DateTime.Now.Hour, DateTime.Now.Minute)); if (num > 0) { while (num > 0) { _module = Constants.MSG_TASK; TaskWait(string.Format("距离{0}还有{1}分钟...", AddZero(Task.ForbiddenEnd.Hour) + ":" + AddZero(Task.ForbiddenEnd.Minute), num--)); Thread.Sleep(0xea60); } } TaskRun(); while (Task.RoundTime > 0) { int dur = DurationMinute(GetNextRunTime()); num = Task.RoundTime + dur; while (num > 0) { _module = Constants.MSG_TASK; if (dur > 0) { TaskWait(string.Format("距离{0}还有{1}分钟...", AddZero(Task.ForbiddenEnd.Hour) + ":" + AddZero(Task.ForbiddenEnd.Minute), num--)); } else { TaskWait(string.Format("{0}分钟后重新启动任务...", new object[] { num-- })); } Thread.Sleep(0xea60); } TaskRun(); } } else { _module = Constants.MSG_TASK; TaskRun(); while (Task.RoundTime > 0) { num = Task.RoundTime; while (num > 0) { TaskWait(string.Format("{0}分钟后重新启动任务...", new object[] { num-- })); Thread.Sleep(0xea60); } TaskRun(); } } } else if (Task.RunMode == EnumRunMode.Timing) { TimeInfo lastrun = null; SetMessageLn("开始执行定时任务..."); while (true) { TimeInfo runtime = GetLatestRunTime(lastrun); if (runtime.CompareTo(new TimeInfo(99, 99)) == 0) { return; } num = runtime.LeftMinutes(DateTime.Now); if (num == 0) { lastrun = runtime; TaskRun(); } else { while (num > 0) { _module = Constants.MSG_TASK; TaskWait(string.Format("距离{0}还有{1}分钟...", AddZero(runtime.Hour) + ":" + AddZero(runtime.Minute), num--)); Thread.Sleep(0xea60); } lastrun = runtime; TaskRun(); } } } } catch (ThreadAbortException) { //LogHelper.Write("TaskManager.TaskStart", "ThreadAbortException", LogSeverity.Info); SetMessageLn("中止执行!"); if (Task.WriteLogToFile) { TraceLog.WriteLogToFile(Task.TaskName, this.ExecutionLog.ToString()); } } catch (ThreadInterruptedException) { //LogHelper.Write("TaskManager.TaskStart", "ThreadInterruptedException", LogSeverity.Info); SetMessageLn("中止执行!"); if (Task.WriteLogToFile) { TraceLog.WriteLogToFile(Task.TaskName, this.ExecutionLog.ToString()); } } catch (Exception ex) { LogHelper.Write("TaskManager.TaskStart", ex); SetMessageLn("发生异常,任务已中止!错误:" + ex.Message); if (Task.WriteLogToFile) { TraceLog.WriteLogToFile(Task.TaskName, this.ExecutionLog.ToString()); } } }
public TaskInfo() { _runmode = EnumRunMode.MultiLoop; _roundtime = 60; _forbidden = true; _forbiddenstart = new TimeInfo(0, 0); _forbiddenend = new TimeInfo(8, 0); _starttimes = new Collection<TimeInfo>(); _executepark = true; _executebite = true; _executeslave = true; _executehouse = true; _executegarden = true; _executeranch = true; _executefish = true; _executerich = true; _sendlog = false; _receiveremail = ""; _writelogtofile = false; _skipvalidation = false; _accounts = new Collection<AccountInfo>(); _parkmycars = true; _postotherscars = false; _joinmatch = true; _originatematch = true; _originatematchid = 1; _originateteamnum = 2; _startcar = false; _cheerup = true; _startcartime = new TimeInfo(8, 30); _approverecovery = true; _biteothers = true; _autorecover = true; _protectfriend = false; _buyslave = true; _buylowpriceslave = false; _fawnmaster = true; _propitiateslave = true; _afflictslave = true; _releaseslave = false; _maxSlaves = 9; _nickname = "阿桂,挖煤啦!"; _dojob = true; _stayhouse = true; _robfriends = false; _robfreefriends = true; _drivefriends = false; _farmself = true; _expensivefarmself = true; _customfarmself = 1; _farmshared = false; _expensivefarmshared = true; _customfarmshared = 1; _harvestfruit = true; _buyseed = true; _buyseedcount = 1; _helpothers = true; _stealfruit = false; _presentfruit = false; _presentfruitbyprice = true; _presentfruitcheckvalue = true; _presentfruitvalue = 100; _presentfruitid = 11; _presentfruitchecknum = true; _presentfruitnum = 1000; _sellfruit = false; _lowcash = true; _lowcashlimit = 100; _sellallfruit = false; _maxselllimit = 300; _sellforbiddennfruitslist = new Collection<int>(); _sowmyseedsfirst = false; _stealunknowfruit = true; _stealforbiddenfruitslist = new Collection<int>(); _harvestproduct = true; _harvestanimal = true; _addwater = true; _helpaddwater = false; _addgrass = true; _helpaddgrass = false; _buycalf = true; _buycalfbyprice = true; _buycalfcustom = 1; _stealproduct = false; _makeproduct = true; _helpmakeproduct = false; _breedanimal = false; _foodnum = 200; _presentproduct = false; _presentproductbyprice = true; _presentproductcheckvalue = true; _presentproductvalue = 100; _presentproductaid = 1; _presentproducttype = 0; _presentproductchecknum = true; _presentproductnum = 100; _sellproduct = false; _sellproductlowcash = true; _sellproductlowcashlimit = 100; _sellallproducts = false; _sellproductmaxlimit = 300; _sellproductforbiddenlist = new Collection<ProductInfo>(); _addcarrot = true; _helpaddcarrot = false; _carrotnum = 200; _addbamboo = true; _helpaddbamboo = false; _bamboonum = 200; _shake = true; _treatfish = true; _updatefishpond = true; _bangkejing = true; _buyfish = true; _maxfishes = 20; _buyfishbyrank = true; _buyfishfishid = 1; _fishing = true; _buyupdatetackle = false; _maxtackles = 5; _harvestfish = true; _netselffish = false; _netselffishcheap = false; _netselffishmature = 80; _helpfish = true; _presentfish = false; _presentfishcheap = false; _presentfishcheckvalue = true; _presentfishvalue = 10000; _presentfishforbiddenlist = new Collection<int>(); _sellfish = false; _sellfishlowcash = false; _sellfishlowcashlimit = 10; _sellallfish = false; _sellfishcheckvalue = false; _sellfishvalue = 10000; _sellfishmaxlimit = 20; _sellfishforbiddenlist = new Collection<int>(); _sellasset = true; _buyasset = true; _buyassetcheap = false; _giveupifratio = true; _giveupratio = 50; _giveupifminimum = true; _giveupminimum = 5; _giveupifmyasset = false; _giveupassetcount = 3; _advancedpurchase = false; _buyassetslist = new Collection<int>(); _boxclean = true; _cook = true; _cooktomatofirst = true; _cookmedlarfirst = false; _cookcrabfirst = false; _cookpineapplefirst = false; _cooklowcash = true; _cooklowcashlimit = 2000; _hire = true; _maxemployees = 12; _helpfriend = true; _presentfood = false; _presentforbiddenfoodlist = new Collection<int>(); _presentfoodbycount = true; _presentfooddishid = 4; _presentfoodmessage = "送你食物啦!"; _presentfoodratio = 50; _presentlowcash = true; _presentlowcashlimit = 2000; _presentfoodlowcount = true; _presentfoodlowcountlimit = 2; _purchasefood = false; _purchasefoodbyrefprice = true; _sellfood = false; _sellfoodbyrefprice = true; }
private int CompareTo(TimeInfo time1, TimeInfo time2) { if (time1.Hour - time2.Hour > 0) return 1; else if (time1.Hour - time2.Hour == 0) { if (time1.Minute - time2.Minute > 0) return 1; else if (time1.Minute - time2.Minute == 0) return 0; else return -1; } else return -1; }
private int CompareTo(TimeInfo time, DateTime now) { if (time.Hour - now.Hour > 0) return 1; else if (time.Hour - now.Hour == 0) { if (time.Minute - now.Minute > 0) return 1; else if (time.Minute - now.Minute == 0) return 0; else return -1; } else return -1; }
private int LeftMinutes(TimeInfo time, TimeInfo dt) { int cmpmin = CompareTo(time, new TimeInfo(dt.Hour, dt.Minute)); if (cmpmin < 0) return (24 - dt.Hour) * 60 - dt.Minute + time.Hour * 60 + time.Minute; else if (cmpmin == 0) return 0; else return (time.Hour - dt.Hour) * 60 - dt.Minute + time.Minute; }
private TimeInfo GetLatestRunTime(TimeInfo last) { if (Task.StartTimes == null || Task.StartTimes.Count == 0) return new TimeInfo(99, 99); TimeInfo min = null; int num = 0; foreach (TimeInfo time in Task.StartTimes) { if (last == null) { if (CompareTo(time, DateTime.Now) >= 0) { if (min == null) { min = time; num = min.LeftMinutes(DateTime.Now); } else { if (num > time.LeftMinutes(DateTime.Now)) { min = time; num = time.LeftMinutes(DateTime.Now); } } } } else { if (CompareTo(time, DateTime.Now) >= 0 && time.Minute > last.Minute) if (min == null) { min = time; num = min.LeftMinutes(DateTime.Now); } else { if (num > time.LeftMinutes(DateTime.Now)) { min = time; num = time.LeftMinutes(DateTime.Now); } } } } if (min == null) min = Task.StartTimes[0]; return min; }
private int DurationMinute(TimeInfo time) { int num = 0; if (CompareTo(Task.ForbiddenStart, Task.ForbiddenEnd) < 0) { if (CompareTo(Task.ForbiddenStart, time) <= 0 && CompareTo(Task.ForbiddenEnd, time) >= 0) { num = LeftMinutes(Task.ForbiddenEnd, time); } } else { if (CompareTo(Task.ForbiddenStart, time) <= 0 || CompareTo(Task.ForbiddenEnd, time) >= 0) { num = LeftMinutes(Task.ForbiddenEnd, time); } } return num; }