Windows服务中的多线程
本文关键字:多线程 服务 Windows | 更新日期: 2023-09-27 18:20:31
我有一个Windows服务执行两个函数(函数1和函数2),但函数2需要5分钟才能执行(审计数据库中的用户)。
当我启动服务时,会显示一条超时消息:"ERROR:1053"。因为function2运行缓慢,但如果我评论function2,服务运行良好。
我认为多线程是一种解决这种情况的方法,但我从来没有处理过这个问题,如何在这个服务中实现多线程?
我的启动功能:
protected override void OnStart(string[] args)
{
// TODO: Add code here to start your service.
Function1();
Function2();
aTimer.Enabled = true;
eventLog1.WriteEntry("Starting");
}
您可以使用任务。那会更容易。
如果Function2()
依赖于Function1()
,那么您可以执行以下操作:
Task.Run(() =>
{
Function1();
Function2();
aTimer.Enabled = true;
}
eventLog1.WriteEntry("Starting");
我不确定您是想在Task.Run
内部还是外部调用aTimer.Enabled
。这取决于你用它做什么。
如果Function1()
和Function2()
是独立的,您可以使用同时执行它们
Task.Run(()=>
{
Parallel.Invoke(()=>
{
Function1();
},
()=>
{
Function2();
}
}
这将同时执行Function1()
和Function2()
。
Thread temp_thread = new Thread(function);
temp_thread.Start();
您可以尝试以下操作:
Thread thread1 = new Thread(new ThreadStart(Funtion1));
Thread thread2 = new Thread(new ThreadStart(Function2));
thread1.Start();
thread2.Start();
我希望这能完成你的工作。