内存已损坏提示,解决马上给分
直接贴代码:
尝试读取或写入受保护的内存。这通常指示其他内存已损坏
/// <summary> /// 应用程序的主入口点。---------****在这里报这个错误 /// </summary> [STAThread] static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new GUI()); }
public partial class GUI : Form { DataTable m_GradeTable = new DataTable(); Hashtable Axlist = new Hashtable(); public delegate void MyEventHandler(Object sender,EventArgs e); public event MyEventHandler MyEvent; public GUI() { InitializeComponent(); this.dataGridView1.AutoGenerateColumns = false; this.bdsGrade.AutoGenerateColumns = false; dataGridView1.DataSource = MachineInfoBLL.GetMachineInfoAll(); m_GradeTable.Columns.Add("序号", typeof(string)); m_GradeTable.Columns.Add("登记号或卡号", typeof(string)); m_GradeTable.Columns.Add("姓名", typeof(string)); m_GradeTable.Columns.Add("时间", typeof(string)); m_GradeTable.Columns.Add("设备名称", typeof(string)); m_GradeTable.Columns.Add("比对方式", typeof(string)); MyEvent += Connect; } private void Form1_Load(object sender, EventArgs e) { } private void Connect(object sender,EventArgs e) { Axzkemkeeper.AxCZKEM ax = (Axzkemkeeper.AxCZKEM)sender; int rowindex = dataGridView1.CurrentCell.RowIndex; string ip = dataGridView1.Rows[rowindex].Cells[3].Value.ToString(); int port = int.Parse(dataGridView1.Rows[rowindex].Cells[4].Value.ToString()); int commkey = MachineInfoBLL.GetMachinePWD(ip); bool flag = false; int errorCode = 0; ax.SetCommPassword(commkey); flag = ax.Connect_Net(ip, port); if (flag) { ax.RegEvent(1, 32767); ax.OnAttTransactionEx += new Axzkemkeeper._IZKEMEvents_OnAttTransactionExEventHandler(ax_OnAttTransactionEx); dataGridView1.Rows[dataGridView1.CurrentCell.RowIndex].Cells[1].Value ="已连接"; } else { ax.GetLastError(ref errorCode); MessageBox.Show("Unable to connect to device, Error Code: " + errorCode.ToString()); } } private void ax_OnAttTransactionEx(object sender, Axzkemkeeper._IZKEMEvents_OnAttTransactionExEvent e) { int dwMachineNumber = 0; int dwinfo = 2; int dwvalues = 0; //MessageBox.Show("a"); Axzkemkeeper.AxCZKEM ax = (Axzkemkeeper.AxCZKEM)sender; ax.GetDeviceInfo(dwMachineNumber, dwinfo, ref dwvalues); DateTime now = DateTime.Parse(e.year + "-" + e.month + "-" + e.day + " " + e.hour + ":" + e.minute + ":" + e.second); // MessageBox.Show("b"); if (CheckInOutBLL.AddCheckInOutInfo(e.enrollNumber, now, e.verifyMethod.ToString(), dwvalues.ToString(), now)) { if (e.verifyMethod == 1) m_GradeTable.Rows.Add(new string[] { (bdsGrade.Rows.Count + 1).ToString(), e.enrollNumber.ToString(), e.enrollNumber.ToString(), now.ToString(), dwvalues.ToString(), "指纹验证" }); else m_GradeTable.Rows.Add(new string[] { (bdsGrade.Rows.Count + 1).ToString(), e.enrollNumber.ToString(), e.enrollNumber.ToString(), now.ToString(), dwvalues.ToString(), "密码" }); this.bdsGrade.DataSource = m_GradeTable; } // MessageBox.Show("c"); } private void dataGridView1_CellMouseDown(object sender, DataGridViewCellMouseEventArgs e) { if (e.Button == MouseButtons.Right) { if (e.RowIndex >= 0) { //若行已是选中状态就不再进行设置 if (dataGridView1.Rows[e.RowIndex].Selected == false) { dataGridView1.ClearSelection(); dataGridView1.Rows[e.RowIndex].Selected = true; } //只选中一行时设置活动单元格 if (dataGridView1.SelectedRows.Count == 1) { dataGridView1.CurrentCell = dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex]; } else { } //弹出操作菜单 contextMenuStrip1.Show(MousePosition.X, MousePosition.Y); } } } private void 连接设备ToolStripMenuItem_Click(object sender, EventArgs e) { System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(GUI)); Axzkemkeeper.AxCZKEM ax = new Axzkemkeeper.AxCZKEM(); int rowindex = dataGridView1.CurrentCell.RowIndex; int eqpid = int.Parse(dataGridView1.Rows[rowindex].Cells[2].Value.ToString()); Axlist.Add(eqpid,ax); this.Controls.Add(ax); ax.Visible = false; if (MyEvent != null) { MyEvent.BeginInvoke(ax, EventArgs.Empty, null, null); for (int i = 0; i <= 100; i++) { int a = i; } } } private void 断开设备ToolStripMenuItem_Click(object sender, EventArgs e) { int rowindex = dataGridView1.CurrentCell.RowIndex; int eqpid = int.Parse(dataGridView1.Rows[rowindex].Cells[2].Value.ToString()); Axzkemkeeper.AxCZKEM ax = (Axzkemkeeper.AxCZKEM)Axlist[eqpid]; ax.Beep(150); ax.Disconnect(); } }
public GUI() { try { InitializeComponent(); this.dataGridView1.AutoGenerateColumns = false; this.bdsGrade.AutoGenerateColumns = false; dataGridView1.DataSource = MachineInfoBLL.GetMachineInfoAll(); m_GradeTable.Columns.Add("序号", typeof(string)); m_GradeTable.Columns.Add("登记号或卡号", typeof(string)); m_GradeTable.Columns.Add("姓名", typeof(string)); m_GradeTable.Columns.Add("时间", typeof(string)); m_GradeTable.Columns.Add("设备名称", typeof(string)); m_GradeTable.Columns.Add("比对方式", typeof(string)); MyEvent += Connect; } Catch(Exception ex) { // 在这里设个断点看看哪行代码出的问题。 //..... } }
[解决办法]