我有一个Windows服务执行两个函数(函数1和函数2),但是函数2需要5分钟才能执行(在DB中审核用户)。
当我启动该服务时,会显示一条超时消息:' ERROR:1053'。因为function2运行缓慢,但如果我评论function2,那么服务运行正常。
我认为MultiThread是解决问题的方法,但我从不使用此功能,如何在此服务中实现MultiThread?
我的启动功能:
protected override void OnStart(string[] args)
{
// TODO: Add code here to start your service.
Function1();
Function2();
aTimer.Enabled = true;
eventLog1.WriteEntry("Starting");
}
答案 0 :(得分:0)
您可以使用任务。那会更容易。
如果Function2()
取决于Function1()
,那么您可以执行以下操作:
Task.Run(() =>
{
Function1();
Function2();
aTimer.Enabled = true;
}
eventLog1.WriteEntry("Starting");
我不确定您是否希望在aTimer.Enabled
内或外部调用Task.Run
。这取决于你使用它的目的。
如果Function1()
和Function2()
是独立的,您可以同时执行以下操作:
Task.Run(()=>
{
Parallel.Invoke(()=>
{
Function1();
},
()=>
{
Function2();
}
}
这将同时执行Function1()
和Function2()
。
答案 1 :(得分:0)
Thread temp_thread = new Thread(function);
temp_thread.Start();
答案 2 :(得分:0)
您可以尝试以下方法:
Thread thread1 = new Thread(new ThreadStart(Funtion1));
Thread thread2 = new Thread(new ThreadStart(Function2));
thread1.Start();
thread2.Start();
我希望这能让你的工作完成。