C#写从log文件向access自动导入数据的窗口程序,运行一段时间后停止工作,问题事件名称:CLR20r3,求教各位该怎么解决?谢谢

leao007 2014-11-23 03:21:51
各位前辈好:我近日用C#写了个小窗口程序,功能是从log文件向access自动导入数据,并设置间隔一段时间自动运行。但是现在发现,程序起初可以正常实现导入功能,但是运行一段时间后就会停止,问题事件名称:CLR20r3,详细信息如下:
问题签名 01: readandsyncmonitoringdata.exe
问题签名 02: 1.0.0.0
问题签名 03: 54717fa3
问题签名 04: System.Data
问题签名 05: 4.0.30319.18408
问题签名 06: 52311175
问题签名 07: 1b5c
问题签名 08: 1a
问题签名 09: System.Data.OleDb.OleDbException
OS 版本: 6.1.7601.2.1.0.274.10
区域设置 ID: 2052
其他信息 1: 0a9e
其他信息 2: 0a9e372d3b4ad19135b953a78882e789
其他信息 3: 0a9e
其他信息 4: 0a9e372d3b4ad19135b953a78882e789
请问,这个问题该怎么下手呢?谢谢!
...全文
2352 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaohk1980 2016-03-07
  • 打赏
  • 举报
回复
引用 5 楼 leao007 的回复:
再次感谢! 我是初学者,代码中没有用到多线程,只是用到了让进程定时休眠。主函数代码如下: static void Main(string[] args) { on = false; System.Threading.Timer threadTimer = new System.Threading.Timer(new System.Threading.TimerCallback(ExecuteImport), null, 0, 900000); while (!on) { Thread.Sleep(900000); //15minutes } } 另外,程序是在运行中突然退出,并没有抛出异常。 我现在就把你给的这段代码加进去,看看能否解决这个问题。 请问你知道为什么提示log中的个别数据会被锁定,无法访问吗?还有为什么程序读出来的数据顺序会被打乱呢? 谢谢!
你采用的System.Threading.Timer,这个是线程计时器。
xian_wwq 2014-11-24
  • 打赏
  • 举报
回复
System.Data.OleDb.OleDbException 看错误日志是数据库连接环节出问题了 建议在数据库操作时增加操作日志 以定位问题
leao007 2014-11-24
  • 打赏
  • 举报
回复
再次感谢! 我是初学者,代码中没有用到多线程,只是用到了让进程定时休眠。主函数代码如下: static void Main(string[] args) { on = false; System.Threading.Timer threadTimer = new System.Threading.Timer(new System.Threading.TimerCallback(ExecuteImport), null, 0, 900000); while (!on) { Thread.Sleep(900000); //15minutes } } 另外,程序是在运行中突然退出,并没有抛出异常。 我现在就把你给的这段代码加进去,看看能否解决这个问题。 请问你知道为什么提示log中的个别数据会被锁定,无法访问吗?还有为什么程序读出来的数据顺序会被打乱呢? 谢谢!
xian_wwq 2014-11-24
  • 打赏
  • 举报
回复
引用 2 楼 leao007 的回复:
[quote=引用 1 楼 xian_wwq 的回复:] System.Data.OleDb.OleDbException 看错误日志是数据库连接环节出问题了 建议在数据库操作时增加操作日志 以定位问题
你好,谢谢你的回复! 后来我网络上查阅相关错误信息,有人说是因为对出现的异常没有处理,我就加了个try catch块,之后就真没有出现这个问题,catch到的信息显示是有些数据被锁定。但我对此很不解,同一个log文件中的数据,怎么会有一两条被锁定呢?是因为读取的数据量太大呢?求助!!! 同时我又发现了另一个问题:C#写的这个小窗口应用程序,在导入数据库的同时也可同步显示导入的数据内容,但是当一次读取的数据量大的时候,就发现数据不是按照文件中的顺序来读或写的,会跳来跳去。并且,有时读着读着就毫无征兆的自动退出了,加了catch也没用,直接被跳过了。请问这是不是说明窗口程序不适合读取大批量数据呢? 非常感谢![/quote] 个人感觉和数据量关联不大,还是代码写的有需要改进的地方 写入操作有没有用到多线程? 运行中突然退出还是有异常抛出了 参照这个添加代码,再看看什么情况下会退出

        static void Main(string[] args)
        {
            AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
        }

        static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
        {
            Exception error = (Exception)e.ExceptionObject;
            Console.WriteLine("MyHandler caught : " + error.Message);
        }
q772905418 2014-11-24
  • 打赏
  • 举报
回复
有没有可能是重复数据?
leao007 2014-11-24
  • 打赏
  • 举报
回复
引用 1 楼 xian_wwq 的回复:
System.Data.OleDb.OleDbException 看错误日志是数据库连接环节出问题了 建议在数据库操作时增加操作日志 以定位问题
你好,谢谢你的回复! 后来我网络上查阅相关错误信息,有人说是因为对出现的异常没有处理,我就加了个try catch块,之后就真没有出现这个问题,catch到的信息显示是有些数据被锁定。但我对此很不解,同一个log文件中的数据,怎么会有一两条被锁定呢?是因为读取的数据量太大呢?求助!!! 同时我又发现了另一个问题:C#写的这个小窗口应用程序,在导入数据库的同时也可同步显示导入的数据内容,但是当一次读取的数据量大的时候,就发现数据不是按照文件中的顺序来读或写的,会跳来跳去。并且,有时读着读着就毫无征兆的自动退出了,加了catch也没用,直接被跳过了。请问这是不是说明窗口程序不适合读取大批量数据呢? 非常感谢!

110,569

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧