0

Wait我的应用程序在方法上花费了太多时间

环境:

  • .Net 4.0
  • 应用平台 x86
  • 控制台应用
  • 赢服务器 2008 (x64)

我已经通过 dottrace 检查了性能

Wait标记为SecuritySafeCriticalAttribute

请注意在 Win7 (x64) 上一切正常。我什么也没找到,欢迎提出任何建议。

任务处理

private readonly BlockingCollection<TTask> _queue = new BlockingCollection<TTask>();
private Thread _workThread;

public void ProcessTask(TTask task)
{
    _queue.Add(task);
}

private void ProcessTask()
{
    while (_isRun)
    {
        try
        {
            TTask task = _queue.Take();
            if (task.IsNull())
            {
                continue;
            }
            _log.DebugFormat("Sending task: {0}", task);
            DoProcessMessage(task);
        }
        catch (Exception ex)
        {
            _log.Error(ex);
        }
    }
}
4

2 回答 2

0

我认为安全属性不会影响速度。在这里等待很长时间可能需要很多时间,可能是因为您同时从多个线程访问受保护的对象(某些集合)并保持对象锁定很长时间(例如,当您的代码处理集合中的每个项目时)。这不是使用集合的正确方法,而且绝对是代码中的瓶颈。

于 2012-12-17T11:19:44.143 回答
0

解决了

看起来像dottrace显示天气。我已经通过ANTS Performance Profiler检查了性能并解决了这个问题。问题出在通过 NHibernate 的 sql 请求中

于 2012-12-17T16:04:03.640 回答