Visual Studio 2017 C#Debug模式下因为调用层次过多导致StackOverFlowException
Visual Studio 2017
C# 工程
Debug模式下因为
函数调用层次过多导致StackOverFlowException
后来在一些位置使用了Task.Factory.StartNew
IVDataQueueProvider.GetAsync
public void GetAsync(Variety arg_vOption, Action<ErrorObject, IVDataQueue> arg_fnRet)
{
if(_dtQueue.ContainsKey(arg_vOption))
{
arg_fnRet(true, _dtQueue[arg_vOption]);
}
else
{
var uqueue = default(IDataQueue<MiniTickData>);
var oqueue = default(IDataQueue<MiniTickData>);
norlib.Algorithm.AsyncOneByOne(
last =>
{
if (last.IsTrue)
{
var ivqueue = new IVDataQueue(arg_vOption.Id, uqueue, oqueue, 0);
ivqueue.OpenAsync(new object(), eoi =>
{
if (eoi.IsTrue)
{
_dtQueue.Add(arg_vOption, ivqueue);
}
arg_fnRet(eoi, eoi.IsTrue ? ivqueue : null);
});
}
else
{
arg_fnRet(last, null);
}
},
next =>
{
_mtqp.GetAsync(arg_vOption, true, (eoi, qi) =>
{
oqueue = qi;
next(eoi);
});
},
next=>
{
//2018.11.07
//发现如果utqp内部没有在外部单独Cache
//而在此时读取DataCenterCache(MongoCache)
//在Debug情况下可能Stack过深导致StackOverFlowException
//所以这里采用Task来跳出Stack
Task.Factory.StartNew(() =>
{
_utqp.GetAsync(new UnderlyingInfo(this._underlying, arg_vOption.DeliveryYearMonth), (eoi, qi) =>
{
uqueue = qi;
next(eoi);
});
});
});
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· DeepSeek在M芯片Mac上本地化部署
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能