System.Web.UI.ScriptManager”的方法“get_EnableCdn”没有实现

解决VS2010打开VS2008项目并升级至.NET4.0后的问题,通过修改web.config文件中的assemblyBinding设置,确保项目正常运行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在vs2010打开vs2008项目时,由.net2.0换成.net4.0后出现的问题,后再web.config改动一下

 

在<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 中添加appliesTo="v2.0.50727",如下图

再次运行就好了

Imports System.Data Imports NPOI.HSSF.UserModel Imports NPOI.SS.UserModel Imports System.Collections.Generic Partial Class MIT2_AcceptQuery Inherits System.Web.UI.Page Dim db As SqlDb = New SqlDb() Dim ds As DataSet Protected Sub Page_Load(sender As Object, e As System.EventArgs) Handles Me.Load If Not IsPostBack Then Dim sql = "SELECT DISTINCT 公司編號,公司名稱 FROM MITDEVIL.料號_count" ddlDataSet(pear, sql, "公司名稱", "公司編號") End If End Sub Sub ddlDataSet(ByVal dll As DropDownList, ByVal sql As String, ByVal text As String, ByVal value As String) ds = db.FillDataSet(sql) dll.Items.Clear() dll.DataSource = ds dll.DataTextField = text dll.DataValueField = value dll.DataBind() dll.Items.Insert(0, "") End Sub Protected Sub BTN_search_Click(sender As Object, e As System.EventArgs) Handles BTN_search.Click Dim sql As String = "SELECT 驗收單號 ,驗收序號 ,驗收人員 ,CONVERT(varchar(10),資料日期,111) 資料日期 ," & _ " 廠商編號 ,廠商名稱 ,料號 ,品名規格, 數量, 價格 ,單位 ,幣別 ,備註 ,廠別 ,匯率 ,異動類型 ," & _ " CONVERT(varchar(10),異動日期 ,111) 異動日期 ,集團類別 ,Price_Copy,Money,Date_Price_Copy " & _ " FROM [MITDEVIL].[計劃異動] WHERE 1=1 " If pear.Text = "" Then System.Web.UI.ScriptManager.RegisterStartupScript(UpdatePanel1, GetType(UpdatePanel), "AjaxMsgBox", "alert('請選擇基準公司!');", True) Exit Sub Else sql = sql + " AND 公司編號='" + pear.SelectedItem.Value + "'" End If If part_number.Text <> "" Then sql = sql + " AND 料號='" + part_number.Text + "'" End If If stradate.Value <> "" Then sql = sql + " AND 資料日期 >='" + stradate.Value + "'" End If If enddate.Value <> "" Then sql = sql + " AND 資料日期 <= '" + enddate.Value + "'" End If If createdate.Value <> "" Then sql = sql + " AND convert(char(10),創建日期,111) = convert(char(10),'" + createdate.Value + "',111)" End If sql = sql + " ORDER BY 資料日期 DESC " ViewState("AcceptDT") = db.FillDataSet(sql).Tables(0) GridView1.DataSource = db.FillDataSet(sql) ViewState("sql") = sql GridView1.DataBind() End Sub Protected Sub btn_export_Click(sender As Object, e As System.EventArgs) Handles btn_export.Click Dim arr As New ArrayList Try arr.Add("驗收單號") arr.Add("驗收序號") arr.Add("驗收人員") arr.Add("資料日期") arr.Add("廠商編號") arr.Add("廠商名稱") arr.Add("料號") arr.Add("品名規格") arr.Add("數量") arr.Add("價格") arr.Add("單位") arr.Add("幣別") arr.Add("備註") arr.Add("廠別") arr.Add("匯率") arr.Add("異動類型") arr.Add("異動日期") arr.Add("集團類別") arr.Add("價格冊單價") arr.Add("價格冊幣別") arr.Add("價格冊生效日期") SaveDate(CreateExcel(db.FillDataSet(ViewState("sql")), arr), "驗收單資料.xls") Catch ex As Exception Page.ClientScript.RegisterClientScriptBlock(Me.GetType(), "MsgBox", "alert(轉檔失敗,請重試或者聯繫系統負責人');", True) ' Return End Try End Sub Private Function CreateExcel(ByVal ds As DataSet, ByVal arrs As ArrayList) As NPOI.SS.UserModel.IWorkbook Dim workbook As IWorkbook = New NPOI.HSSF.UserModel.HSSFWorkbook() Dim sheet As New ArrayList Dim sheet1 As NPOI.SS.UserModel.ISheet = workbook.CreateSheet(arrs(0)) sheet.Add(sheet1) If arrs.Count = 4 Then Dim sheet4 As NPOI.SS.UserModel.ISheet = workbook.CreateSheet(arrs(3)) sheet.Add(sheet4) End If Dim headstyle As ICellStyle = workbook.CreateCellStyle Dim headfontstyle As HSSFFont = workbook.CreateFont 'Dim textfontstyle As HSSFFont = workbook.CreateFont Dim textstyle As HSSFCellStyle = workbook.CreateCellStyle Dim textstyle2 As HSSFCellStyle = workbook.CreateCellStyle Dim textstyle3 As HSSFCellStyle = workbook.CreateCellStyle Dim textstyle4 As HSSFCellStyle = workbook.CreateCellStyle Dim formact As HSSFDataFormat = workbook.CreateDataFormat Dim arr As New ArrayList With headfontstyle .Boldweight = NPOI.SS.UserModel.FontBoldWeight.Bold End With 'With textfontstyle ' .Boldweight = NPOI.SS.UserModel.FontBoldWeight.Bold ' .Color = NPOI.SS.UserModel.FontColor.Red 'End With With headstyle .Alignment = NPOI.SS.UserModel.HorizontalAlignment.Center ' .VerticalAlignment = SS.UserModel.VerticalAlignment.Center '.WrapText = True .SetFont(headfontstyle) .BorderBottom = NPOI.SS.UserModel.BorderStyle.Thin .BorderLeft = NPOI.SS.UserModel.BorderStyle.Thin .BorderTop = NPOI.SS.UserModel.BorderStyle.Thin .BorderRight = NPOI.SS.UserModel.BorderStyle.Thin End With With textstyle .Alignment = NPOI.SS.UserModel.HorizontalAlignment.Left .BorderBottom = NPOI.SS.UserModel.BorderStyle.Thin .BorderLeft = NPOI.SS.UserModel.BorderStyle.Thin .BorderTop = NPOI.SS.UserModel.BorderStyle.Thin .BorderRight = NPOI.SS.UserModel.BorderStyle.Thin End With With textstyle2 '日期格式的 .Alignment = NPOI.SS.UserModel.HorizontalAlignment.Center .BorderBottom = NPOI.SS.UserModel.BorderStyle.Thin .BorderLeft = NPOI.SS.UserModel.BorderStyle.Thin .BorderTop = NPOI.SS.UserModel.BorderStyle.Thin .BorderRight = NPOI.SS.UserModel.BorderStyle.Thin .DataFormat = HSSFDataFormat.GetBuiltinFormat("yyyy/MM/dd") End With With textstyle3 '數值帶千分位格式的 .Alignment = NPOI.SS.UserModel.HorizontalAlignment.Right .BorderBottom = NPOI.SS.UserModel.BorderStyle.Thin .BorderLeft = NPOI.SS.UserModel.BorderStyle.Thin .BorderTop = NPOI.SS.UserModel.BorderStyle.Thin .BorderRight = NPOI.SS.UserModel.BorderStyle.Thin '.DataFormat = HSSFDataFormat.GetBuiltinFormat("G/通用格式") .DataFormat = formact.GetFormat("0.00") End With With textstyle4 '數值格式的 .Alignment = NPOI.SS.UserModel.HorizontalAlignment.Right .BorderBottom = NPOI.SS.UserModel.BorderStyle.Thin .BorderLeft = NPOI.SS.UserModel.BorderStyle.Thin .BorderTop = NPOI.SS.UserModel.BorderStyle.Thin .BorderRight = NPOI.SS.UserModel.BorderStyle.Thin .DataFormat = formact.GetFormat("0") End With arr.Add(textstyle) arr.Add(textstyle2) arr.Add(textstyle3) arr.Add(textstyle4) '開始寫入SHEET1 '创建行 Dim row As NPOI.SS.UserModel.IRow = sheet(0).CreateRow(0) For k As Integer = 0 To arrs.Count - 1 '创建单元格 Dim cell As NPOI.SS.UserModel.ICell = row.CreateCell(k) '设置单元格值 cell.SetCellValue(arrs(k).ToString) cell.CellStyle = headstyle Next For i As Integer = 0 To ds.Tables(0).Rows.Count - 1 '创建行 row = sheet(0).CreateRow(i + 1) For j As Integer = 0 To ds.Tables(0).Columns.Count - 1 '创建单元格 Dim cell As NPOI.SS.UserModel.ICell = row.CreateCell(j) '设置单元格值 'cell.SetCellValue(ds.Tables(0).Rows(i)(field.Item(j).ToString).ToString) ' cell.CellStyle = textstyle SetCellValueByColumnType(row, j, ds.Tables(0).Rows(i)(j), ds.Tables(0).Columns(j), arr) Next Next For i As Integer = 0 To ds.Tables(0).Columns.Count - 1 sheet(0).AutoSizeColumn(i) Next Return workbook End Function Private Sub SetCellValueByColumnType(ByVal myExcelRow As NPOI.SS.UserModel.IRow, ByVal myNewCellIndex As Integer, _ ByVal myValue As Object, ByVal myDataColumn As DataColumn, ByVal arr As ArrayList) If myExcelRow Is Nothing Then Exit Sub If myNewCellIndex < 0 Then Exit Sub If myValue Is Nothing Then Exit Sub If myDataColumn Is Nothing Then Exit Sub Select Case (myDataColumn.DataType.ToString()) Case "System.String" '://字符串类型 myExcelRow.CreateCell(myNewCellIndex).SetCellValue(myValue.ToString().Trim) myExcelRow.GetCell(myNewCellIndex).CellStyle = arr(0) Case "System.DateTime" '://日期类型 If Not IsDBNull(myValue) Then myExcelRow.CreateCell(myNewCellIndex).SetCellValue(Convert.ToDateTime(myValue).ToShortDateString) myExcelRow.GetCell(myNewCellIndex).CellStyle = arr(1) Else myExcelRow.CreateCell(myNewCellIndex).SetCellValue(myValue.ToString().Trim) myExcelRow.GetCell(myNewCellIndex).CellStyle = arr(0) End If Case "System.Boolean" '://布尔型 If Not IsDBNull(myValue) Then If Convert.ToBoolean(myValue) Then myExcelRow.CreateCell(myNewCellIndex).SetCellValue("True") Else myExcelRow.CreateCell(myNewCellIndex).SetCellValue("False") End If End If Case "System.Int16", "System.Int32", "System.Int64" '://整型 If Not IsDBNull(myValue) Then myExcelRow.CreateCell(myNewCellIndex).SetCellValue(Convert.ToInt64(myValue)) myExcelRow.GetCell(myNewCellIndex).CellStyle = arr(3) Else myExcelRow.CreateCell(myNewCellIndex).SetCellValue(myValue.ToString().Trim) myExcelRow.GetCell(myNewCellIndex).CellStyle = arr(0) End If Case "System.Byte" If Not IsDBNull(myValue) Then myExcelRow.CreateCell(myNewCellIndex).SetCellValue(Convert.ToByte(myValue)) myExcelRow.GetCell(myNewCellIndex).CellStyle = arr(0) Else myExcelRow.CreateCell(myNewCellIndex).SetCellValue(myValue.ToString().Trim) myExcelRow.GetCell(myNewCellIndex).CellStyle = arr(0) End If Case "System.Decimal" '://浮点型 If Not IsDBNull(myValue) Then myExcelRow.CreateCell(myNewCellIndex).SetCellValue(Convert.ToDecimal(myValue)) myExcelRow.GetCell(myNewCellIndex).CellStyle = arr(2) Else myExcelRow.CreateCell(myNewCellIndex).SetCellValue(myValue.ToString().Trim) myExcelRow.GetCell(myNewCellIndex).CellStyle = arr(0) End If Case "System.Double" If Not IsDBNull(myValue) Then myExcelRow.CreateCell(myNewCellIndex).SetCellValue(Convert.ToDouble(myValue)) myExcelRow.GetCell(myNewCellIndex).CellStyle = arr(2) Else myExcelRow.CreateCell(myNewCellIndex).SetCellValue(myValue.ToString().Trim) myExcelRow.GetCell(myNewCellIndex).CellStyle = arr(0) End If Case Else myExcelRow.CreateCell(myNewCellIndex).SetCellValue(myValue.ToString().Trim) myExcelRow.GetCell(myNewCellIndex).CellStyle = arr(0) End Select End Sub Private Sub SaveDate(ByVal workbook As NPOI.SS.UserModel.IWorkbook, ByVal ExcelName As String) Dim ms As IO.MemoryStream Try '建立資料流 ms = New IO.MemoryStream() '寫入資料流 workbook.Write(ms) '在頁面輸出資料 Dim filename As String = "attachment;filename=" & HttpUtility.UrlEncode(ExcelName, Encoding.UTF8).ToString() Response.AddHeader("Content-Disposition", filename) Response.BinaryWrite(ms.ToArray()) Catch ex As Exception Finally '釋放資源 If Not ms Is Nothing Then ms.Dispose() ms.Close() End If End Try End Sub Protected Sub GridView1_PageIndexChanging(sender As Object, e As System.Web.UI.WebControls.GridViewPageEventArgs) Handles GridView1.PageIndexChanging GridView1.PageIndex = e.NewPageIndex GridView1.DataSource = ViewState("AcceptDT") GridView1.DataBind() End Sub End Cl给gridciew1绑定一个翻页功能
最新发布
06-21
代码解释using System; using System.IO; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading; //using System.Windows.Controls; using System.Windows.Threading; using System.ComponentModel; namespace EMCL { public enum ETestResult { TR_Fail = 0, TR_Pass = 1, TR_Done = 2, TR_Continue = 3, TR_Error = 4, TR_End = 5, } public enum ETestMode { Mode1_1 = 11, Mode1_2 = 12, Mode2_1 = 21, Mode2_2 = 22, Mode3_1 = 31, Mode3_2 = 32 } public enum ETestStage { Stage_PreTest = 0, Stage_PostTest = 1, Stage_CycleTest = 2 } public class TestExecutor : IDisposable { public TestExecutor() { TargetTestCycle = 1; TargetTestTime = new TimeSpan(0); } public virtual void Dispose() { } public int TargetTestCycle { get; set; } public TimeSpan TargetTestTime { get; set; } public virtual ETestResult Execute(TaskManager tm) { return ETestResult.TR_End; } } public class TestMode : TestExecutor { public TestMode() { Mode = ETestMode.Mode3_2; CycleInterval = 0; } public string Name { get; set; } public ETestMode Mode { get; set; } double CycleInterval { get; set; } public override ETestResult Execute(TaskManager tm) { DateTime tmBeg = DateTime.Now; ETestResult tr = tm.OnModeBegin(this); if (ETestResult.TR_Continue < tr) { tm.OnModeEnd(this); return tr; } int nCycleInv = (int)(CycleInterval * 1000); if (base.TargetTestCycle >= 0) { int nCycleCnt = base.TargetTestCycle; if (0 == base.TargetTestCycle) nCycleCnt = int.MaxValue; for (int c = 0; c < nCycleCnt; c++) { tr = tm.ExecCycle(); if (ETestResult.TR_Continue < tr) break; if (nCycleInv > 0) System.Threading.Thread.Sleep(nCycleInv); } } else if (base.TargetTestTime > new TimeSpan(0)) { while (tmBeg + base.TargetTestTime > DateTime.Now) { tr = tm.ExecCycle(); if (ETestResult.TR_Continue < tr) break; if (nCycleInv > 0) System.Threading.Thread.Sleep(nCycleInv); } } tm.OnModeEnd(this); return tr; } } public class TestTask : TestExecutor { protected List<TestMode> m_ModeList = null; public TestTask() { m_ModeList = new List<TestMode>(); } public override void Dispose() { RemoveAllMode(); } public string Name { get; set; } public List<TestMode> GetModeList() { return m_ModeList; } public void RemoveAllMode() { foreach (TestMode mode in m_ModeList) { mode.Dispose(); } m_ModeList.Clear(); } public void AddMode(TestMode tm) { m_ModeList.Add(tm); } public override ETestResult Execute(TaskManager tm) { DateTime tmBeg = DateTime.Now; ETestResult tr = tm.OnTaskBegin(this); if (ETestResult.TR_Continue < tr) { tm.OnTaskEnd(this); return tr; } if (base.TargetTestCycle >= 0) { int nCycleCnt = base.TargetTestCycle; if (0 == base.TargetTestCycle) nCycleCnt = int.MaxValue; for (int c = 0; c < nCycleCnt; c++) { tr = ExecMode(tm); if (ETestResult.TR_Continue < tr) break; } } else if (base.TargetTestTime > new TimeSpan(0)) { while (tmBeg + base.TargetTestTime > DateTime.Now) { tr = ExecMode(tm); if (ETestResult.TR_Continue < tr) break; } } tm.OnTaskEnd(this); return tr; } public virtual ETestResult ExecMode(TaskManager tm) { ETestResult tr = ETestResult.TR_Done; foreach (TestMode mode in m_ModeList) { tr = mode.Execute(tm); if (ETestResult.TR_Continue < tr) { break; } } return tr; } } public class TaskManager : TestExecutor { protected List<TestTask> m_TaskList = null; protected DateTime m_tmTestStart; protected DateTime m_tmTestStop; protected volatile int m_tsCycleTime; protected DateTime m_tmCycleBegin; protected double m_lfTotalCycleTime; protected volatile int m_nExecCycleNo = 0; protected volatile Boolean m_KeepWorking; protected volatile ETestStage m_TestStage; public TaskManager() { DutCount = 1; m_TaskList = new List<TestTask>(); m_KeepWorking = false; } public override void Dispose() { RemoveAllTask(); } public int DutCount { get; set; } public int CurrentTestCycle { get { return m_nExecCycleNo; } } public DateTime BeginTestTime { get { return m_tmTestStart; } } public DateTime EndTestTime { get { return m_tmTestStop; } } public TimeSpan TotalTestTime { get { if (m_tmTestStop > m_tmTestStart) return TimeSpan.FromSeconds((int)(m_tmTestStop - m_tmTestStart).TotalSeconds); else return TimeSpan.FromSeconds((int)(DateTime.Now - m_tmTestStart).TotalSeconds); } } public TimeSpan CycleTime { get { return TimeSpan.FromMilliseconds(m_tsCycleTime); } } public ETestStage TestStage { get { return m_TestStage; } } public List<TestTask> GetTaskList() { return m_TaskList; } public TestTask GetTask(int idx) { return m_TaskList[idx]; } public void RemoveAllTask() { foreach (TestTask task in m_TaskList) { task.Dispose(); } m_TaskList.Clear(); } public void AddTask(TestTask tt) { m_TaskList.Add(tt); } public void Execute() { m_tsCycleTime = 0; m_lfTotalCycleTime = 0; m_tmTestStart = DateTime.Now; //////////////////////////////////////////////////// m_tmTestStop = m_tmTestStart; m_KeepWorking = true; if (ETestResult.TR_Continue < OnTestBegin()) { OnTestEnd(); return; } if (!m_KeepWorking) { OnTestEnd(); return; } ExecTask(this); OnTestEnd(); } public virtual ETestResult ExecTask(TaskManager tm) { m_TestStage = ETestStage.Stage_CycleTest; ETestResult tr = ETestResult.TR_Done; foreach (TestTask task in m_TaskList) { tr = task.Execute(tm); if (ETestResult.TR_Continue < tr) { break; } } return tr; } public virtual ETestResult ExecCycle() { int nCurCycle = m_nExecCycleNo++; ETestResult tr = OnCycleBegin(nCurCycle); if (ETestResult.TR_Continue < tr) { OnCycleEnd(nCurCycle); return tr; } for (int dut = 0; dut < DutCount; dut++) { tr = ExecDut(nCurCycle, dut); if (ETestResult.TR_Continue < tr) { break; } } OnCycleEnd(nCurCycle); if (!m_KeepWorking) tr = ETestResult.TR_End; return tr; } public virtual ETestResult ExecDut(int nCurCycle, int dut) { ETestResult tr = OnDutBegin(dut); if (ETestResult.TR_Continue < tr) { OnDutEnd(dut); return tr; } tr = ExecTestPlan(nCurCycle, dut); OnDutEnd(dut); return tr; } public virtual ETestResult ExecTestPlan(int nCurCycle, int dut) { ETestResult tr = OnTestPlanBegin(nCurCycle, dut); if (ETestResult.TR_Continue < tr) { OnTestPlanEnd(nCurCycle, dut); return tr; } tr = TestPlan(nCurCycle, dut); OnTestPlanEnd(nCurCycle, dut); return tr; } public virtual ETestResult TestPlan(int nCurCycle, int dut) { return ETestResult.TR_Done; } public virtual ETestResult OnTestBegin() { m_TestStage = ETestStage.Stage_PreTest; return ETestResult.TR_Done; } public virtual ETestResult OnTestEnd() { m_tmTestStop = DateTime.Now; m_TestStage = ETestStage.Stage_PostTest; return ETestResult.TR_Done; } public virtual ETestResult OnTaskBegin(TestTask tt) { return ETestResult.TR_Done; } public virtual ETestResult OnTaskEnd(TestTask tt) { return ETestResult.TR_Done; } public virtual ETestResult OnModeBegin(TestMode tm) { return ETestResult.TR_Done; } public virtual ETestResult OnModeEnd(TestMode tm) { return ETestResult.TR_Done; } public virtual ETestResult OnCycleBegin(int idx) { m_tmCycleBegin = DateTime.Now; return ETestResult.TR_Done; } public virtual ETestResult OnCycleEnd(int idx) { m_lfTotalCycleTime += (DateTime.Now - m_tmCycleBegin).TotalMilliseconds; m_tsCycleTime = (int)(m_lfTotalCycleTime / CurrentTestCycle); return ETestResult.TR_Done; } public virtual ETestResult OnDutBegin(int idx) { return ETestResult.TR_Done; } public virtual ETestResult OnDutEnd(int idx) { return ETestResult.TR_Done; } public virtual ETestResult OnTestPlanBegin(int nCurCycle, int dut) { return ETestResult.TR_Done; } public virtual ETestResult OnTestPlanEnd(int nCurCycle, int dut) { return ETestResult.TR_Done; } } public class TestManager : TaskManager, IDisposable { // The Test thread //protected Thread m_thread = null; AutoResetEvent evtThdEnd = new AutoResetEvent(false); BackgroundWorker backgroundWorker1 = null; public TestManager() { } public override void Dispose() { base.Dispose(); } public virtual bool TM_Init() { return true; } protected virtual void DoEvents() { } public virtual bool TM_IsStart() { if (null == backgroundWorker1 || !backgroundWorker1.IsBusy) return false; return true; } public virtual bool TM_Start() { //// create a anonymous function to call DoSomthing //ParameterizedThreadStart threadDelegate = delegate (object obj) //{ // TestManager This = (TestManager)obj; // This.Execute(); // This.ThreadEnd(); //}; //// Do Somthing in a thread //m_thread = new Thread(threadDelegate); //m_thread.IsBackground = true; if (backgroundWorker1 != null && backgroundWorker1.IsBusy) return false; m_nExecCycleNo = 0; m_tmTestStart = DateTime.Now; evtThdEnd.Reset(); //m_thread.Start(this); backgroundWorker1 = new BackgroundWorker(); backgroundWorker1.WorkerReportsProgress = true; backgroundWorker1.WorkerSupportsCancellation = true; backgroundWorker1.DoWork += backgroundWorker1_DoWork; if (backgroundWorker1.IsBusy != true) { // Start the asynchronous operation. backgroundWorker1.RunWorkerAsync(); } //private void cancelAsyncButton_Click(object sender, EventArgs e) //{ // if (backgroundWorker1.WorkerSupportsCancellation == true) // { // // Cancel the asynchronous operation. // backgroundWorker1.CancelAsync(); // } return true; } public virtual bool TM_Stop() { if (null == backgroundWorker1) return false; if (!backgroundWorker1.IsBusy) return true; m_KeepWorking = false; bool bEnd = false; //bEnd = evtThdEnd.WaitOne(10); //while (!bEnd && m_thread.IsAlive) //{ // DoEvents(); // bEnd = evtThdEnd.WaitOne(10); //} if (backgroundWorker1.WorkerSupportsCancellation == true) { // Cancel the asynchronous operation. backgroundWorker1.CancelAsync(); } bEnd = evtThdEnd.WaitOne(10); while (!bEnd && backgroundWorker1.IsBusy) { DoEvents(); bEnd = evtThdEnd.WaitOne(10); } return true; } void ThreadEnd() { evtThdEnd.Set(); } private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e) { BackgroundWorker worker = sender as BackgroundWorker; Execute(); ThreadEnd(); //for (int i = 1; i <= 10; i++) //{ // if (worker.CancellationPending == true) // { // e.Cancel = true; // break; // } // else // { // // Perform a time consuming operation and report progress. // System.Threading.Thread.Sleep(500); // worker.ReportProgress(i * 10); // } //} } // This event handler updates the progress. private void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e) { //resultLabel.Text = (e.ProgressPercentage.ToString() + "%"); } // This event handler deals with the results of the background operation. private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) { //if (e.Cancelled == true) //{ // resultLabel.Text = "Canceled!"; //} //else if (e.Error != null) //{ // resultLabel.Text = "Error: " + e.Error.Message; //} //else //{ // resultLabel.Text = "Done!"; //} } } public class ScriptTestManager : TestManager { protected Dictionary<string, string> m_FuncMap = new Dictionary<string, string>(); protected IScriptVM vm = null; public ScriptTestManager() { } public IScriptVM ScriptVM { get { return vm; } } public Dictionary<string, string> ScriptFuncName { get { return m_FuncMap; } } public virtual bool TM_InitVM(string name) { vm = CScriptVM.CreateVM(name); return null != vm; } public string DefaultScriptPath { get { return vm.DefaultScriptPath; } set { vm.DefaultScriptPath = value; } } public void SetLog(SimpleLogger log) { vm.Logger = log; } public override bool TM_Init() { if (!vm.VM_Init()) { return false; } return base.TM_Init(); } public override void Dispose() { } public virtual bool TM_Start(string sTestScript) { string path = Path.GetDirectoryName(sTestScript); vm.SearchPath.Add(path); if (!vm.VM_Renew()) { return false; } if (!vm.VM_LoadFile(sTestScript)) { return false; } return base.TM_Start(); } //public override bool TM_Stop() //{ // return true; //} public override ETestResult TestPlan(int nCurCycle, int dut) { if (!ScriptFuncName.ContainsKey("TestPlan")) return ETestResult.TR_Done; string sFuncName = ScriptFuncName["TestPlan"]; if (null != vm.VM_Find(sFuncName)) { object rawValue = vm.VM_Call(sFuncName, nCurCycle, dut); bool ret = false; try { ret = Convert.ToBoolean(rawValue); } catch (FormatException) { // Console.WriteLine("Bad Format"); } catch (InvalidCastException) { // Console.WriteLine("No Conversion"); } if (!ret) { return ETestResult.TR_End; } } return ETestResult.TR_Continue; } public override ETestResult OnTestBegin() { base.OnTestBegin(); if (!ScriptFuncName.ContainsKey("PrevTest")) return ETestResult.TR_Done; string sFuncName = ScriptFuncName["PrevTest"]; if (null != vm.VM_Find(sFuncName)) { object rawValue = vm.VM_Call(sFuncName); bool ret = false; try { ret = Convert.ToBoolean(rawValue); } catch (FormatException) { // Console.WriteLine("Bad Format"); } catch (InvalidCastException) { // Console.WriteLine("No Conversion"); } if (!ret) { return ETestResult.TR_End; } } return ETestResult.TR_Continue; } public override ETestResult OnTestEnd() { base.OnTestEnd(); if (!ScriptFuncName.ContainsKey("PostTest")) return ETestResult.TR_Done; string sFuncName = ScriptFuncName["PostTest"]; if (null != vm.VM_Find(sFuncName)) { object rawValue = vm.VM_Call(sFuncName); bool ret = false; try { ret = Convert.ToBoolean(rawValue); } catch (FormatException) { // Console.WriteLine("Bad Format"); } catch (InvalidCastException) { // Console.WriteLine("No Conversion"); } if (!ret) { return ETestResult.TR_End; } } return ETestResult.TR_End; } public override ETestResult OnModeBegin(TestMode tm) { if (!ScriptFuncName.ContainsKey("PrevTestMode")) return ETestResult.TR_Done; string sFuncName = ScriptFuncName["PrevTestMode"]; if (null != vm.VM_Find(sFuncName)) { object rawValue = vm.VM_Call(sFuncName, tm); bool ret = false; try { ret = Convert.ToBoolean(rawValue); } catch (FormatException) { // Console.WriteLine("Bad Format"); } catch (InvalidCastException) { // Console.WriteLine("No Conversion"); } if (!ret) { return ETestResult.TR_End; } } return ETestResult.TR_Continue; } public override ETestResult OnModeEnd(TestMode tm) { if (!ScriptFuncName.ContainsKey("PostTestMode")) return ETestResult.TR_Done; string sFuncName = ScriptFuncName["PostTestMode"]; if (null != vm.VM_Find(sFuncName)) { object rawValue = vm.VM_Call(sFuncName, tm); bool ret = false; try { ret = Convert.ToBoolean(rawValue); } catch (FormatException) { // Console.WriteLine("Bad Format"); } catch (InvalidCastException) { // Console.WriteLine("No Conversion"); } if (!ret) { return ETestResult.TR_End; } } return ETestResult.TR_Continue; } } public class ScriptEventModule { protected IScriptVM vm = null; public ScriptEventModule() { } public IScriptVM ScriptVM { get { return vm; } } public virtual bool Init(string name) { vm = CScriptVM.CreateVM(name); if (null != vm) { return true; } if (!vm.VM_Init()) { return false; } return true; } public string DefaultScriptPath { get { return vm.DefaultScriptPath; } set { vm.DefaultScriptPath = value; } } public void SetLog(SimpleLogger log) { vm.Logger = log; } public bool Reset() { if (!vm.VM_Renew()) { return false; } return true; } public void Dispose() { } public void LogException(Exception e) { if (null != vm) vm.VM_LogException(e); } public bool Load(string sTestScript) { if (!vm.VM_LoadFile(sTestScript)) { return false; } return true; } public object Call(string sFuncName, params object[] args) { if (null == vm.VM_Find(sFuncName)) return null; object r = null; try { r = vm.VM_Call(sFuncName, args); } catch (FormatException) { // Console.WriteLine("Bad Format"); } catch (InvalidCastException) { // Console.WriteLine("No Conversion"); } return r; } } }
06-14
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值