在WPF应用程序中,我有一个查询应该得到一个非常繁重的数据(在ObjectJson
记录下面的LINQ查询大小为10MB!),
这是方法:
public List<HistoryLog> GetAudits(List<Guid> userIds, DateTime? fromDate, DateTime? toDate, List<string> formNames)
{
var audits = from h in oContext.TbHistoryLog
join o in oContext.TbObjects on h.FormName equals o.ObjectRealName
join u in oContext.TbUsers on h.UserId equals u.UserId
where userIds.Contains((Guid)h.UserId) && formNames.Contains(o.ObjectRealName)
&& h.DateUpdated > fromDate && h.DateUpdated < toDate
orderby h.DateUpdated
select new HistoryLog
{
UserName = Helper.CurrLang == Helper.SystemLanguage.Arabic ? u.UserAName : u.UserEName,
UserCode = u.UserCode,
DateUpdated = h.DateUpdated,
ObjectCode = h.ObjectCode,
JSONClassName = h.JSONClassName,
FormName = h.FormName,
State = h.State,
ObjectJson = h.ObjectJson,
};
return audits.ToList(); //exception is thrown on this
}
我得到了这个例外
托管调试助手&#39; ContextSwitchDeadlock&#39; :&#39; CLR有 无法从COM上下文0x7d9d408转换到COM上下文 0x7d9d350持续60秒。拥有目标的线程 上下文/公寓最有可能是做一次非抽水等待或 处理非常长时间运行的操作而无需泵送Windows 消息。这种情况通常会对性能产生负面影响 甚至可能导致应用程序变得无响应或内存 使用量随着时间的推移不断累积。所有人都要避免这个问题 单线程公寓(STA)线程应该使用抽水等待 原语(如CoWaitForMultipleHandles)和常规泵 长时间运行的消息。&#39;
应用程序挂起一分钟然后触发异常..对此有何帮助?正在编写async
方法来解决这个问题吗?