一次又一次地得到这个错误

编程入门 行业动态 更新时间:2024-10-26 21:30:11
本文介绍了一次又一次地得到这个错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

An exception of type 'System.Runtime.InteropServices.COMException' occurred in mscorlib.dll but was not handled in user code Additional information: Exception from HRESULT: 0x800A03EC If there is a handler for this exception, the program may be safely continued. here is my code what i am using.

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Threading; using System.Windows.Forms; using Excel = Microsoft.Office.Interop.Excel; using System.IO.Ports; using System.IO; namespace WindowsFormsApplication7 { public partial class Form1 : Form { private SerialPort myport; private string in_data, time; private string j, l; public int i=1, k, time_sec,count=0; private DateTime datetime; public string key, add_data, data, filename,filename1, pathfile, rxd_no, date, ravi1; public string[] arr = new string[60]; public string[] arr1 = new string[60]; float ravi; public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { string name = Environment.UserName; date = DateTime.Today.ToShortDateString(); // get the current date pathfile = @"C:\Users\" + name + "\\Documents\\"; // pathfile = @"C:\Users\BADLIA\Documents\"; filename = DateTime.Now.ToString("yyyyMMdd") + ".xls"; filename1 = "directory"+DateTime.Now.ToString("yyyyMMdd")+".xls";// file name = current date // file name = current date if (File.Exists(pathfile + filename) == true) { } else { File.CreateText(pathfile + filename).Close(); Excel._Application xlApp; // TO access excel file Excel.Workbook xlWorkBook; Excel.Worksheet xlWorkSheet; object misValue = System.Reflection.Missing.Value; xlApp = new Excel.Application(); // start new excel application xlApp.DisplayAlerts = false; // off display alerts xlWorkBook = xlApp.Workbooks.Open(pathfile + filename, 0, false, 5, "", "", false, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "", true, false, 0, true, false, false); // open file in write mode xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1); //get_Item(1) == sheet1 xlWorkSheet.Cells[1, 1] = "time"; // cells[row,column] xlWorkSheet.Cells[1, 2] = "weight"; //xlWorkSheet.Cells[i, 3] = data; // Excel.Range chartRange; Excel.ChartObjects xlCharts = (Excel.ChartObjects)xlWorkSheet.ChartObjects(Type.Missing); //Excel.ChartObject myChart1 = (Excel.ChartObject)xlCharts.Delete(); Excel.ChartObject myChart = (Excel.ChartObject)xlCharts.Add(10, 80, 300, 250); Excel.Chart chartPage = myChart.Chart; //chartRange = xlWorkSheet.get_Range("A1", "B" + i); //chartPage.SetSourceData(chartRange, misValue); //chartPage.ChartType = Excel.XlChartType.xlColumnStacked100; xlWorkBook.SaveAs(pathfile + filename, Excel.XlFileFormat.xlWorkbookNormal, misValue, misValue, misValue, misValue, Excel.XlSaveAsAccessMode.xlExclusive, misValue, misValue, misValue, misValue, misValue); xlWorkBook.Close(true, misValue, misValue); //true== to save changes xlApp.Quit(); releaseObject(xlWorkSheet); releaseObject(xlWorkBook); releaseObject(xlApp); } if (File.Exists(pathfile + filename1) == true) { Excel._Application xlApp; // TO access excel file Excel.Workbook xlWorkBook; Excel.Worksheet xlWorkSheet; object misValue = System.Reflection.Missing.Value; xlApp = new Excel.Application(); // start new excel application xlApp.DisplayAlerts = false; // off display alerts xlWorkBook = xlApp.Workbooks.Open(pathfile + filename1, 0, false, 5, "", "", false, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "", true, false, 0, true, false, false); // open file in write mode xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1);//get_Item(1) == sheet1 key = xlWorkSheet.get_Range("A1", "A1").Value2.ToString(); int.TryParse(key, out i); MessageBox.Show(key); xlWorkBook.SaveAs(pathfile + filename1, Excel.XlFileFormat.xlWorkbookNormal, misValue, misValue, misValue, misValue, Excel.XlSaveAsAccessMode.xlExclusive, misValue, misValue, misValue, misValue, misValue); xlWorkBook.Close(true, misValue, misValue); //true== to save changes xlApp.Quit(); releaseObject(xlWorkSheet); releaseObject(xlWorkBook); releaseObject(xlApp); } else { File.CreateText(pathfile + filename1).Close(); } } private void button2_Click(object sender, EventArgs e) { if (count == 0) { count++; string name = Environment.MachineName; System.Diagnostics.Process[] process = System.Diagnostics.Process.GetProcessesByName("Excel"); foreach (System.Diagnostics.Process p in process) { if (!string.IsNullOrEmpty(p.ProcessName)) { try { p.Kill(); } catch { } } } myport = new SerialPort(); // define new serial port myport.BaudRate = 9600; // set baudrate of new serial port myport.PortName = port_name.Text; // gets the name of the port which is written in textbox named "port_name" myport.Parity = Parity.None; myport.DataBits = 8; myport.StopBits = StopBits.One; port_name.Visible = true; // Serial write time = datetime.Hour + ":" + datetime.Minute + ":" + datetime.Second; myport.DataReceived += myport_DataReceived; try { myport.Open(); // start serial port myport.WriteLine("start"); // Serial write } catch (Exception ex) { MessageBox.Show(ex.Message, "Error"); // displays"error" when exception occurs } this.Invoke(new EventHandler(Excel_start)); } } void myport_DataReceived(object sender, SerialDataReceivedEventArgs e) // predefined funtion name " <portname>_Datareceived" { //this function is called automatically whenever data is received on serial port // rxd_no = myport.ReadLine(); // "readline" read upto new line in_data = myport.ReadLine(); // data = myport.ReadTo("\x03");// read upto new line time_sec = DateTime.Now.Second; // get the current second j = in_data; // ravi = Convert.ToSingle(in_data); float.TryParse(in_data, out ravi); l = data; k = time_sec; arr[k] = j; arr1[k] = l; this.Invoke(new EventHandler(displaydata_event)); } private void displaydata_event(object sender, EventArgs e) { datetime = DateTime.Now; // define variable // string time = datetime.Hour + ":" + datetime.Minute + ":" + datetime.Second; try { int time_sec = DateTime.Now.Second; // get the current minute k = time_sec; chart1.Series["Weight"].Points.AddXY(time, j); } catch (Exception ex4) { MessageBox.Show(ex4.Message, "Error"); } weight.Text = j; } private void button3_Click(object sender, EventArgs e) { try { count = 0; myport.Close(); // close communication } catch (Exception ex2) { MessageBox.Show(ex2.Message, "Error"); } } private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e) { // Thread.Sleep(3000); while (myport.IsOpen == true) { Excel._Application xlApp; // TO access excel file Excel.Workbook xlWorkBook; Excel.Worksheet xlWorkSheet; object misValue = System.Reflection.Missing.Value; xlApp = new Excel.Application(); // start new excel application xlApp.DisplayAlerts = false; // off display alerts xlWorkBook = xlApp.Workbooks.Open(pathfile + filename, 0, false, 5, "", "", false, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "", true, false, 0, true, false, false); // open file in write mode xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1); xlWorkSheet.Cells[i, 1] = time; // cells[row,column] xlWorkSheet.Cells[i, 3] = ravi; //xlWorkSheet.Cells[i, 3] = data; i++; Excel.Range chartRange; Excel.ChartObjects xlCharts = (Excel.ChartObjects)xlWorkSheet.ChartObjects(Type.Missing); Excel.ChartObject myChart1 = (Excel.ChartObject)xlCharts.Delete(); Excel.ChartObject myChart = (Excel.ChartObject)xlCharts.Add(10, 80, 300, 250); Excel.Chart chartPage = myChart.Chart; chartRange = xlWorkSheet.get_Range("A2", "B" + i); chartPage.SetSourceData(chartRange, misValue); chartPage.ChartType = Excel.XlChartType.xlLine; xlWorkBook.SaveAs(pathfile + filename, Excel.XlFileFormat.xlWorkbookNormal, misValue, misValue, misValue, misValue, Excel.XlSaveAsAccessMode.xlExclusive, misValue, misValue, misValue, misValue, misValue); xlWorkBook.Close(true, misValue, misValue); //true== to save changes xlApp.Quit(); releaseObject(xlWorkSheet); releaseObject(xlWorkBook); releaseObject(xlApp); xlApp = new Excel.Application(); // start new excel application xlApp.DisplayAlerts = false; // off display alerts xlWorkBook = xlApp.Workbooks.Open(pathfile + filename1, 0, false, 5, "", "", false, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "", true, false, 0, true, false, false); // open file in write mode xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1); //get_Item(1) == sheet1 xlWorkSheet.Cells[1, 1] = i; // cells[row,column] xlWorkBook.SaveAs(pathfile + filename1, Excel.XlFileFormat.xlWorkbookNormal, misValue, misValue, misValue, misValue, Excel.XlSaveAsAccessMode.xlExclusive, misValue, misValue, misValue, misValue, misValue); xlWorkBook.Close(true, misValue, misValue); //true== to save changes xlApp.Quit(); releaseObject(xlWorkSheet); releaseObject(xlWorkBook); releaseObject(xlApp); if (backgroundWorker1.CancellationPending)//checks for cancel request { e.Cancel = true; break; } } } private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) { } private void button1_Click(object sender, EventArgs e) { } private void Excel_start(object sender, EventArgs e) { backgroundWorker1.RunWorkerAsync(); } private void releaseObject(object obj) { try { System.Runtime.InteropServices.Marshal.ReleaseComObject(obj); obj = null; } catch (Exception ex) { obj = null; MessageBox.Show("Unable to release the Object " + ex.ToString()); } finally { GC.Collect(); } } private void button4_Click(object sender, EventArgs e) { try { this.Invoke(new EventHandler(button3_Click)); backgroundWorker1.CancelAsync();//makes the backgroundworker stop Excel.Application xlApp; Excel.Workbook xlWorkBook; Excel.Worksheet xlWorkSheet; object misValue = System.Reflection.Missing.Value; xlApp = new Excel.Application(); // start new excel application xlApp.DisplayAlerts = false; // off display alerts xlWorkBook = xlApp.Workbooks.Open(pathfile + filename, 0, false, 5, "", "", false, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "", true, false, 0, true, false, false); // open file in write mode xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1); //xlWorkBook.SaveAs("csharp-informations.xls", Excel.XlFileFormat.xlWorkbookNormal, misValue, misValue, misValue, misValue, Excel.XlSaveAsAccessMode.xlExclusive, misValue, misValue, misValue, misValue, misValue); xlWorkBook.Save(); xlApp.Visible = true; xlApp .UserControl = true; // xlWorkBook.Close(true, misValue, misValue); // xlApp.Quit(); //releaseObject(xlWorkSheet); //releaseObject(xlWorkBook); //releaseObject(xlApp); } catch { } } } }

推荐答案

我们无法从这一块代码告诉你。 第一件事要做的是找出创建异常的地方:并且假装异常并假装他们没有做到这一点并没有帮助那里: We can't tell you from that lump of code. The first thing to do is find out where the exception is being created: and swollowing exceptions and pretending they didn;t happen isn't helping there: private void button4_Click(object sender, EventArgs e) { try { ... } catch { } }

这并不能解决任何问题,只是意味着你的应用因此不会立即崩溃。获取Exception对象并检查它,记录它,报告它:几乎任何东西都比吞下它并希望更好! 所以改变你的尝试... catch 为您提供信息,并在调试器中运行它以找出生成异常的位置。这应该让你知道在你的代码中你做错了什么导致外部代码检测到问题。 但没有它,所有人都可以做的就是猜...

That doesn;t cure any problems, it just means that your app doesn't crash immediately as a result. Get the Exception object and examine it, log it, report it: almost anything is better than just swallowing it and hoping! So change your try...catch to give you information, and run it in the debugger to find out where the exception is generated. That should give you an idea where in your code you are doing something wrong that causes the external code to detect a problem. But without that, all anyone can do is guess...

更多推荐

一次又一次地得到这个错误

本文发布于:2023-11-27 23:52:15,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1640112.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:错误

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!