private static void StartPersistantTest(Domain d) { lock (TestProccessStatusLocker) { if (ms_tps == TestProcessStatus.Ready) { //Domain ms_domain = d; //清空log区 ms_dgv.Rows.Clear(); //重置Close Flag ms_IsClosed = false; //准备vba脚本对象 ms_vbaobjects = new Dictionary <string, IVBAObject>(); IVBAObject ivo = new VBATask(); ms_vbaobjects.Add(ivo.Name, ivo); //小心处理伪Log对象 ms_testlog = new VBATestLog(false); ms_testlog.MessageEvent += new VBATestLog.ScriptPauseEventHandler(MessageHandler); ms_vbaobjects.Add(ms_testlog.Name, ms_testlog); ivo = new VBATestIE(); ms_vbaobjects.Add(ivo.Name, ivo); ivo = new VBAUtility(); ms_vbaobjects.Add(ivo.Name, ivo); ivo = new VBAHtml(); ms_vbaobjects.Add(ivo.Name, ivo); ms_tp = TestPhase.Nonstarted; Thread t = new Thread(BeforeTestHandler); t.Name = "Thread For Persistant Test"; t.Start(); } else if (ms_tps == TestProcessStatus.Singlestep_Pause) { //改成持续运行模式 ms_testlog.TurnPersistance(); //放行 ms_testlog.PulseOne(); } ms_tps = TestProcessStatus.Persistence; RefreshTestToolButtons(); } }
public static void AfterTestHandler(object sender, EventArgs e) { BaseVBAScriptTask whichtask = (BaseVBAScriptTask)sender; if (whichtask.Status == TaskStatus.Succeed && ms_IsClosed == false) { switch (ms_tp) { case TestPhase.Preparation: SetSyntaxDocumentText(ms_domain.ParserScript); ms_task = new LocalParserVBAScriptTask(ms_domain.DomainGUID, whichtask.TaskChainGUID, ms_vbaobjects); whichtask.VBAObjs = null; ms_task.AfterScript += new EventHandler(AfterTestHandler); ms_task.Run(); ms_tp = TestPhase.Parser; whichtask.Dispose(); break; case TestPhase.Parser: SetSyntaxDocumentText(ms_domain.StorageScript); ms_task = new LocalStorageVBAScriptTask(ms_domain.DomainGUID, whichtask.TaskChainGUID, ms_vbaobjects); whichtask.VBAObjs = null; ms_task.AfterScript += new EventHandler(AfterTestHandler); ms_task.Run(); ms_tp = TestPhase.Storage; whichtask.Dispose(); break; case TestPhase.Storage: MessageBox.Show("测试结束,请检查日志以确定代码是否正确", "通知", MessageBoxButtons.OK, MessageBoxIcon.Information); whichtask.Dispose(); ms_task = null; ms_tps = TestProcessStatus.Ready; RefreshTestToolButtons(); break; } } else { whichtask.Dispose(); ms_task = null; ms_tps = TestProcessStatus.Ready; RefreshTestToolButtons(); } }
public static void MessageHandler(VBALogLevelFlag vflag, string message) { if (ms_dgv.InvokeRequired) { MessageHandlerInvokor m1 = new MessageHandlerInvokor(MessageHandler); ms_dgv.BeginInvoke(m1, new object[] { vflag, message }); } else { //加入dataview ms_dgv.Rows.Insert(0, new object[] { ms_levelpics[vflag], vflag, message }); lock (TestProccessStatusLocker) { if (ms_tps == TestProcessStatus.Singlestep_Running) { //改变tps ms_tps = TestProcessStatus.Singlestep_Pause; RefreshTestToolButtons(); } } } }
private static void StartPersistantTest(Domain d) { lock (TestProccessStatusLocker) { if (ms_tps == TestProcessStatus.Ready) { //Domain ms_domain = d; //清空log区 ms_dgv.Rows.Clear(); //重置Close Flag ms_IsClosed = false; //准备vba脚本对象 ms_vbaobjects = new Dictionary<string, IVBAObject>(); IVBAObject ivo = new VBATask(); ms_vbaobjects.Add(ivo.Name, ivo); //小心处理伪Log对象 ms_testlog = new VBATestLog(false); ms_testlog.MessageEvent += new VBATestLog.ScriptPauseEventHandler(MessageHandler); ms_vbaobjects.Add(ms_testlog.Name, ms_testlog); ivo = new VBATestIE(); ms_vbaobjects.Add(ivo.Name, ivo); ivo = new VBAUtility(); ms_vbaobjects.Add(ivo.Name, ivo); ivo = new VBAHtml(); ms_vbaobjects.Add(ivo.Name, ivo); ms_tp = TestPhase.Nonstarted; Thread t = new Thread(BeforeTestHandler); t.Name = "Thread For Persistant Test"; t.Start(); } else if (ms_tps == TestProcessStatus.Singlestep_Pause) { //改成持续运行模式 ms_testlog.TurnPersistance(); //放行 ms_testlog.PulseOne(); } ms_tps = TestProcessStatus.Persistence; RefreshTestToolButtons(); } }