这是因为在取消订阅时,没有让ThreadClient.HandlerLooper.run线程退出。DolphinDB c# api 会在1.30.17.1版本加一个close方法,关闭所有创建的线程以及网络连接,预计5月中旬发布。
在主线程退出后,一直有个后台线程在跑,导致进程无法结束
查看线程发现是ThreadeClient 在run,
而ThreadClient对象都被释放了,他拥有的线程居然一直在跑,变成野线程了
public override bool start()
{
//conn.connect(SERVER, PORT, "admin", "123456");
client = new ThreadedClient(SUB_PORT);
try
{
client.subscribe(SERVER, PORT, tableName, new SampleMessageHandler(), 1);
}
catch (Exception ex)
{
mquant.log(ex.Message, MsgLevel.error);
}
return base.start();
}
public override bool stop() {
stopFlag = true;
try
{
//ThreadedClient client = new ThreadedClient(SUB_PORT);
client.unsubscribe(SERVER, PORT, tableName);
}
catch (Exception e)
{
mquant.log(e.Message,MsgLevel.error);
}
finally
{
//conn.close();
}
return base.stop();
}