错误情况如下:
这里用 这句就不可以 ThSendMsg = new Thread(new ThreadStart(LogMessage)) ;
直接用 LogMessage(); 反而好的。
(这里的函数LogMessage就是到数据库去查询是不是有相应的记录有就记录在一个文本文件里面)
问题:
1。是不是在时间间隔里面 用线程不能触发函数,为什么。
2。这里是不是一定要用线程 ,不用会有什么问题?
代码如下:using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.ServiceProcess;
using System.Data.SqlClient;
using System.Timers;
using System.Threading;namespace WindowsService1
{
public class MyService : System.ServiceProcess.ServiceBase
{
private System.ComponentModel.IContainer components;
public System.Timers.Timer timer1;
public SqlBase sqlbase=new SqlBase();
private Thread ThSendMsg;public MyService()
{
// 该调用是 Windows.Forms 组件设计器所必需的。
InitializeComponent();// TODO: 在 InitComponent 调用后添加任何初始化
}// 进程的主入口点
static void Main()
{
System.ServiceProcess.ServiceBase[] ServicesToRun;// 同一进程中可以运行多个用户服务。若要将
//另一个服务添加到此进程,请更改下行
// 以创建另一个服务对象。例如,
//
//   ServicesToRun = New System.ServiceProcess.ServiceBase[] {new Service1(), new MySecondUserService()};
//
ServicesToRun = new System.ServiceProcess.ServiceBase[] { new MyService() };System.ServiceProcess.ServiceBase.Run(ServicesToRun);
}/// <summary> 
/// 设计器支持所需的方法 - 不要使用代码编辑器 
/// 修改此方法的内容。
/// </summary>
private void InitializeComponent()
{
timer1=new System.Timers.Timer(5000);
timer1.Elapsed+=new System.Timers.ElapsedEventHandler(this.timer1_Elapsed);
// 
// timer1
// 
//this.timer1.Enabled = false;
// 
// MyService
// 
this.ServiceName = "My Sample Service";}/// <summary>
/// 清理所有正在使用的资源。
/// </summary>
protected override void Dispose( bool disposing )
{
if( disposing )
{
if (components != null) 
{
components.Dispose();
}
}
base.Dispose( disposing );
}/// <summary>
/// 设置具体的操作,以便服务可以执行它的工作。
/// </summary>
protected override void OnStart(string[] args)
{
// TODO: 在此处添加代码以启动服务。
this.timer1.Enabled = true; }/// <summary>
/// 停止此服务。
/// </summary>
protected override void OnStop()
{
// TODO: 在此处添加代码以执行停止服务所需的关闭操作。
this.timer1.Enabled = false; }
protected override void OnPause(){this.timer1.Enabled = false; }
protected override void OnContinue(){
this.timer1.Enabled = true; 
}private void timer1_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
ThSendMsg = new Thread(new ThreadStart(LogMessage)) ;
//LogMessage();
}
/* 
* Log specified message to mbmachine 
*/ 
private void LogMessage() 
{ sqlbase.SendResultMsg();
}}
}