void graphicTimer1_Tick(object sender, EventArgs e) { //------------------------------------------------- tickAccum += fastPlanInterval; //Console.WriteLine("tickaccum:" + tickAccum.ToString()); //------------------------------------------------- bool doCaretPlan = false; if (tickAccum > caretBlinkInterval) { // Console.WriteLine("*********"); tickAccum = 0;//reset doCaretPlan = true; } //------------------------------------------------- int needUpdate = 0; if (enableCaretBlink && doCaretPlan) { //------------------------------------------------- //1. fast and animation plan //------------------------------------------------- MyIntervalTaskEventArgs args = GetTaskEventArgs(); int j = this.fastIntervalTaskList.Count; if (j > 0) { for (int i = 0; i < j; ++i) { fastIntervalTaskList[i].InvokeHandler(args); needUpdate |= args.NeedUpdate; } } //------------------------------------------------- //2. caret plan //------------------------------------------------- j = this.caretIntervalTaskList.Count; for (int i = 0; i < j; ++i) { caretIntervalTaskList[i].InvokeHandler(args); needUpdate |= args.NeedUpdate; } FreeTaskEventArgs(args); } else { int j = this.fastIntervalTaskList.Count; MyIntervalTaskEventArgs args = GetTaskEventArgs(); if (j > 0) { for (int i = 0; i < j; ++i) { fastIntervalTaskList[i].InvokeHandler(args); needUpdate |= args.NeedUpdate; } } FreeTaskEventArgs(args); } if (needUpdate > 0) { this.rootgfx.PrepareRender(); this.rootgfx.FlushAccumGraphics(); } }
void FreeTaskEventArgs(MyIntervalTaskEventArgs args) { //clear for reues args.ClearForReuse(); taskEventPools.Push(args); }
void FreeTaskEventArgs(MyIntervalTaskEventArgs args) { //clear for reues args.ClearForReuse(); taskEventPools.Push(args); }