我要实现的功能是:程序实时接收不同终端传过来的数据,将接收到的数据保存数据库(不同的终端对应不同的线程)。和数据库有关的操作是通过linqToSQL、存储过程实现的。执行insert操作最高频率为8次/s。程序启动后,有时候运行2、3个小时,有时刚运行没多久就出错,错误如下:
System.Data
未将对象引用设置到对象的实例。
在 System.Data.SqlClient.SqlConnection.TryOpenInner(TaskCompletionSource`1 retry)
在 System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource`1 retry)
在 System.Data.SqlClient.SqlConnection.Open()
在 System.Data.Linq.SqlClient.SqlConnectionManager.UseConnection(IConnectionUser user)
在 System.Data.Linq.SqlClient.SqlProvider.get_IsSqlCe()
在 System.Data.Linq.SqlClient.SqlProvider.InitializeProviderMode()
在 System.Data.Linq.SqlClient.SqlProvider.System.Data.Linq.Provider.IProvider.Execute(Expression query)
在 System.Data.Linq.DataContext.ExecuteMethodCall(Object instance, MethodInfo methodInfo, Object[] parameters)
在 PAPS.Database.DB_TerminalDatasDataContext.AddTerminalData(Nullable`1 hardwareID, Nullable`1 timeStamp, Binary vibrationDatas) 位置 c:\Users\stu1\Desktop\PipelinePre-warning System(.Net4.5.1)\PAPS.Database\DB_TerminalDatas.designer.cs:行号 90
在 PAPS.Database.TerminalDatas.AddTerminalDatas(Int32 hardid, Int32 terminalid, Int32 framecount, Int32 packcount, Int32 hardversion, Int32 samplingrate, DateTime timestamp, Byte[] datas) 位置 c:\Users\stu1\Desktop\PipelinePre-warning System(.Net4.5.1)\PAPS.Database\TerminalDatas.cs:行号 30
……(后面的都是一些对应的堆栈,就不一一列举了)
不知道该问题如何解决,比较着急,请大神们指导啊!!!拜谢!
未将对象引用设置到对象的实例,这个错误在NET编程中是出现频率几乎是最高的一个。
通常的情况是这样的,你使用了一个对象的属性,语句类似
dim myClass as Textbox
Messagebox.Show(myClass.Text)
由于myClass是Nothing,对Nothing使用.Text就会引发“未将对象引用设置到对象的实例“ 错误。
类似你的情况,
有可能是接收的数据为空,或者数据处理后,某个对象为空,你又没有检查,就直接使用了对象属性造成的。
检查函数中每一个有带.的对象,看是否有机会为Nothing(c#中是null)
是不是你的连接被释放了???