我的控制台程序是用来做监控数据库的..
一旦发现符合条件的数据就进行操作...(数据是一直在增加的)
我现在是如果没有可操作数据,用timer控制,每隔5秒执行一次数据库查询..
如果有就设置timer的停止执行,然后方法体内调用方法一直循环操作,中间不间隔...
直到执行至没有可操作的数据.再次打开timer,监控....
可惜不知道为什么,运行exe之后,一段时间是没事的,有时候一个白天都没有问题..
第二天早上,就报错了,程序遇到未知错误需要关闭..
我现在是每个几分钟然程序自己重新加载一次,关闭旧的程序..
这样倒是可以连续开3~4天左右..然后又报同样的错误..
这个问题困扰了我好久啦,怎么会呢?
一旦发现符合条件的数据就进行操作...(数据是一直在增加的)
我现在是如果没有可操作数据,用timer控制,每隔5秒执行一次数据库查询..
如果有就设置timer的停止执行,然后方法体内调用方法一直循环操作,中间不间隔...
直到执行至没有可操作的数据.再次打开timer,监控....
可惜不知道为什么,运行exe之后,一段时间是没事的,有时候一个白天都没有问题..
第二天早上,就报错了,程序遇到未知错误需要关闭..
我现在是每个几分钟然程序自己重新加载一次,关闭旧的程序..
这样倒是可以连续开3~4天左右..然后又报同样的错误..
这个问题困扰了我好久啦,怎么会呢?
解决方案 »
- 利用jmail接收用UTF-8字符编码发的邮件解析不正确
- 急急急!!麻烦各位高手。在网上下的模版,然后我在模版中添加table,table都没有边框
- c#一个类中有个方法是自动执行的当那个方法到某一部时我在窗体要接收那个类发过来的一个值然后使用它
- 请问如何在win7上安装vs2008,需要服务器组件吗?怎么安装?
- 数据库读数据问题
- 4个usb接口 如何判断u盘是插在哪个接口上的
- 如何将object转换成byte[]
- c#如何构造嵌套类
- 如何用.exe文件接收asp(非.net)网页传过来的值?
- 请问哪位有关于水晶报表的例子?
- 菜鸟问题 有一个窗体 窗体的名字如何随着时间改变
- 如何在word特定位置中插入50张不同的表格C#
一旦发现数据,就停止timer定时执行,自己循环了..
执行完后如果发现没有数据可操作了,定时才再次启动..
static int i = 0;
private static System.Timers.Timer stimer = null;
static void Main(string[] args)
{
SetTimeout();
}
private static void doUpdate()
{
Record record = GetData.getNotdoData();
if (record != null)
{
if (stimer.Enabled)
stimer.Enabled = false;
try
{
//执行的内容
doUpdate();
}
catch (Exception ex)
{
stimer.Enabled = true;
Console.ReadKey();
}
}
else
{
//现在是加了这段才能多跑几天的
if (i >= 6)
{
i = 0;
System.Windows.Forms.Application.Restart();
Environment.Exit(0); } if (!stimer.Enabled)
stimer.Enabled = true;
Console.ReadKey();
}
}
public static void SetTimeout()
{
try
{
stimer = new System.Timers.Timer();
stimer.Elapsed += new ElapsedEventHandler(godoUpdate);
stimer.Interval = 5000;
stimer.Enabled = true;
}
catch
{
Console.WriteLine("计时器异常...");
}
} public static void godoUpdate(object sender, System.Timers.ElapsedEventArgs e)
{
doUpdate();
}
您说的连接数据库需要释放么?
因为我是需要连续不断的执行查询数据库的!
所以没有关闭数据库,是不是需要在重启控制台之前先
conn.Close();
conn.Dispose();
我的连接数据库语句是这样的!在一个类里面调用的
private static SqlConnection connection;
public static SqlConnection Connection
{
get
{ // string connectionString = ""
if (connection == null)
{
connection = new SqlConnection(connectionString);
connection.Open();
}
else if (connection.State == System.Data.ConnectionState.Closed)
{
connection.Open();
}
else if (connection.State == System.Data.ConnectionState.Broken)
{
connection.Close();
connection.Open();
}
return connection;
}