[英]Windows Service start then stops immediately
我已经创建了一个窗口服务,它创建了一个Form,其中创建了一个工具条图标来管理套接字。 我可以通过在Visual Studio中创建的安装程序进行安装,但是当我转到服务并启动我的服务时,它会给我一个错误,说它立即开始和停止。
这是服务代码:
public Service()
{
InitializeComponent();
}
protected override void OnStart(string[] args)
{
base.OnStart(args);
ServiceName = "WizardServer";
CanPauseAndContinue = false;
CanHandleSessionChangeEvent = true;
CanStop = true;
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
try
{
connectionHandler = new ConnectionHandler();
serviceThread = new System.Threading.Thread(new ThreadStart(serviceTarget));
alive = true;
serviceThread.Start();
}
catch {}
}
private void serviceTarget()
{
Application.Run(new Form1(connectionHandler));
while (alive)
{
Thread.Sleep(10000);
}
}
protected override void OnStop()
{
base.OnStop();
try
{
connectionHandler.stop();
}
catch {}
serviceThread.Abort();
alive = false;
Stop();
}
PS:我已经测试了表格,它运行得很好。
我有这个问题,并在谷歌搜索了几个小时,然后我找到解决方案。 您可以在代码中添加以下代码。 在类构造函数中添加InitializeTimer()
。您应该在OnStart()
上设置oTimer.Enabled = true
和oTimer.Start()
在oTimer.Stop()
上设置OnStop()
。
码:
void create()
{
string s = "";
}
void InitializeTimer()
{
oTimer = new System.Timers.Timer(interval);
oTimer.AutoReset = true;
oTimer.Enabled = true;
oTimer.Elapsed += new System.Timers.ElapsedEventHandler(oTimer_Elapsed);
}
void oTimer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
CreateFileData();
}
void CreateFileData()
{
string path = @"C:\SimpleWcfService\SimpleWindowsService\bin\Release\Singh.txt";
StreamWriter oStreamWriter = new StreamWriter(path, true);
oStreamWriter.WriteLine(DateTime.Now.ToString());
oStreamWriter.Close();
oStreamWriter = null;
}
我回答这个问题的时间非常晚,但希望这会帮助其他人解决同样的问题:
更改Windows服务项目的属性中的“输出类型”为我修复了它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.