各位前辈:
我用v4.0框架,制作一后台服务通过Timers定时执行方法,程序中引用了一DLL文件,但只要一经实例化这个dll,服务启动后就没有定时去执行这个方法,又不报错,压根就没有进入此方法,catch也没有捕获异常,注释实例化这行代码,服务又可正常运行。我另外创建一个window窗体应用程序与服务是同样的代码,能够正常运行,我就纳闷了,困扰了,高手们指点一二啊。另外程序引用的DLL文件我之前在不同的路径下注册过,现在一注册就出现 已加载dll 但没有找到DLLRegisterServer 输入点。无法注册这个文件。我想不会是这个原因吧!因为我用于测试的窗体程序也没有注册.但照样能运行。求解protected override void OnStart(string[] args)
{
// TODO: 在此处添加代码以启动服务。
string path = @"D:\\logServer.txt";
FileStream fs = new FileStream(path, FileMode.Append, FileAccess.Write);
StreamWriter sw = new StreamWriter(fs);
sw.WriteLine("{0} 记录时间:{1}", "启动服务", DateTime.Now.ToString());
sw.Flush();
sw.Close();
fs.Close(); time = new System.Timers.Timer(1000 * 4);
//间隔时间
time.Enabled = true;
time.Elapsed += this.TimeOut;
time.Start();
} protected override void OnStop()
{
string path = @"D:\\logServer.txt";
FileStream fs = new FileStream(path, FileMode.Append, FileAccess.Write);
StreamWriter sw = new StreamWriter(fs);
sw.WriteLine("{0} 记录时间:{1}", "停止服务", DateTime.Now.ToString());
sw.Flush();
sw.Close();
fs.Close();
// TODO: 在此处添加代码以执行停止服务所需的关闭操作。
} private void TimeOut(object sender, EventArgs e)
{
string path = @"D:\\logServer.txt";
FileStream fs = new FileStream(path, FileMode.Append, FileAccess.Write);
StreamWriter sw = new StreamWriter(fs); sw.WriteLine("{0} 记录时间:{1}", "未判断狗", DateTime.Now.ToString());
sw.Flush();
sw.Close();
fs.Close(); try
{
if (!DBUtilitySQL.Exists("select * from Base_SoftDog"))
{
AES myAes = new AES();
DBUtilitySQL.ExecuteSql("insert into Base_SoftDog(MsTimestamp) values('" + myAes.AESEncrypt("2010-04-12", true) + "')");
sw.WriteLine("{0} 记录时间:{1}", "已做数据库判断", DateTime.Now.ToString());
sw.Flush();
sw.Close();
fs.Close();
}
//if (new haspHL().Login()) --------------就是此处代码只要启用,总个TimeOut方法都无法执行
//{
// //sw.WriteLine("{0} 记录时间:{1}", "已判断狗", DateTime.Now.ToString());
// AES myAes = new AES();
// DBUtilitySQL.ExecuteSql("update Base_SoftDog set MsTimestamp = '" + myAes.AESEncrypt(DateTime.Now.ToString(), true) + "'");
//}
//else
//{
// //sw.WriteLine("{0} 记录时间:{1}", "未匹配到加密狗", DateTime.Now.ToString());
//}
}
catch (Exception ex)
{
sw.WriteLine("{0} 记录时间:{1}", "出现错误" + ex.Message, DateTime.Now.ToString());
sw.Flush();
sw.Close();
fs.Close();
}
}
我用v4.0框架,制作一后台服务通过Timers定时执行方法,程序中引用了一DLL文件,但只要一经实例化这个dll,服务启动后就没有定时去执行这个方法,又不报错,压根就没有进入此方法,catch也没有捕获异常,注释实例化这行代码,服务又可正常运行。我另外创建一个window窗体应用程序与服务是同样的代码,能够正常运行,我就纳闷了,困扰了,高手们指点一二啊。另外程序引用的DLL文件我之前在不同的路径下注册过,现在一注册就出现 已加载dll 但没有找到DLLRegisterServer 输入点。无法注册这个文件。我想不会是这个原因吧!因为我用于测试的窗体程序也没有注册.但照样能运行。求解protected override void OnStart(string[] args)
{
// TODO: 在此处添加代码以启动服务。
string path = @"D:\\logServer.txt";
FileStream fs = new FileStream(path, FileMode.Append, FileAccess.Write);
StreamWriter sw = new StreamWriter(fs);
sw.WriteLine("{0} 记录时间:{1}", "启动服务", DateTime.Now.ToString());
sw.Flush();
sw.Close();
fs.Close(); time = new System.Timers.Timer(1000 * 4);
//间隔时间
time.Enabled = true;
time.Elapsed += this.TimeOut;
time.Start();
} protected override void OnStop()
{
string path = @"D:\\logServer.txt";
FileStream fs = new FileStream(path, FileMode.Append, FileAccess.Write);
StreamWriter sw = new StreamWriter(fs);
sw.WriteLine("{0} 记录时间:{1}", "停止服务", DateTime.Now.ToString());
sw.Flush();
sw.Close();
fs.Close();
// TODO: 在此处添加代码以执行停止服务所需的关闭操作。
} private void TimeOut(object sender, EventArgs e)
{
string path = @"D:\\logServer.txt";
FileStream fs = new FileStream(path, FileMode.Append, FileAccess.Write);
StreamWriter sw = new StreamWriter(fs); sw.WriteLine("{0} 记录时间:{1}", "未判断狗", DateTime.Now.ToString());
sw.Flush();
sw.Close();
fs.Close(); try
{
if (!DBUtilitySQL.Exists("select * from Base_SoftDog"))
{
AES myAes = new AES();
DBUtilitySQL.ExecuteSql("insert into Base_SoftDog(MsTimestamp) values('" + myAes.AESEncrypt("2010-04-12", true) + "')");
sw.WriteLine("{0} 记录时间:{1}", "已做数据库判断", DateTime.Now.ToString());
sw.Flush();
sw.Close();
fs.Close();
}
//if (new haspHL().Login()) --------------就是此处代码只要启用,总个TimeOut方法都无法执行
//{
// //sw.WriteLine("{0} 记录时间:{1}", "已判断狗", DateTime.Now.ToString());
// AES myAes = new AES();
// DBUtilitySQL.ExecuteSql("update Base_SoftDog set MsTimestamp = '" + myAes.AESEncrypt(DateTime.Now.ToString(), true) + "'");
//}
//else
//{
// //sw.WriteLine("{0} 记录时间:{1}", "未匹配到加密狗", DateTime.Now.ToString());
//}
}
catch (Exception ex)
{
sw.WriteLine("{0} 记录时间:{1}", "出现错误" + ex.Message, DateTime.Now.ToString());
sw.Flush();
sw.Close();
fs.Close();
}
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货