呼び出されたときに子スレッドを生成する 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 サービス スレッドが終了すると、生成された子スレッドが強制終了されていると思われます。これを回避する方法はありますか?