我有一个 web 服务,当它被调用时会产生一个子线程。子线程本身有一个控制循环,应该一直运行到它被告知在未来某个时间点终止。
我正在使用以下代码:
namespace MyService
{
public class MyService : IMyService
{
// Starts a new worker loop on a new thread
public bool startMyProcess(string Name, Guid ID)
{
try
{
// Get DB connection
string dbConn = System.Configuration.ConfigurationManager.ConnectionStrings["MyConnectionString"].ConnectionString;
TManagement tManagement = new TManagement(dbConn);
// If a valid ID has been entered, create a new thread
if (tManagement.validateID(ID) == 0)
{
MainLoop myWorker = new MainLoop();
Thread bw = new Thread(() => myWorker.startWebServiceLoop(Name, ID));
bw.Start();
return true;
}
else
{
return false; // The ID is invalid
}
}
catch
{
// An error has occurred
return false;
}
}
}
}
然而,在几个成功的循环(做同样的事情)之后,线程“bw”终止了。
我希望这个子线程无限期地继续下去。我怀疑一旦 web 服务线程终止,子生成的线程就会被杀死。有没有办法避免这种情况?