首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WaitHandle.WaitAll不等了吗?

WaitHandle.WaitAll不等了吗?
EN

Stack Overflow用户
提问于 2014-07-17 12:07:53
回答 1查看 168关注 0票数 0

我有一个控制台应用程序,我正在尝试使用.NET 3.5做一些线程处理工作。

代码语言:javascript
复制
    int[] iArrReports = { 6/*, 103*/ };
    WaitHandle[] handles = new WaitHandle[iArrReports.Length];
    for(int i = 0; i < iArrReports.Length; i++)
    {
      PerformMergeDelegate mergeDelegate = new PerformMergeDelegate(doWork);
      IAsyncResult result = mergeDelegate.BeginInvoke(iArrReports[i], (r) =>
      {
        Logger delegateLogger = mergeDelegate.EndInvoke(r);
        if (delegateLogger.iMessageLevel == Logger.LOG_LEVELS.LEVEL_ERROR)
        {
          try
          {
            Monitor.Enter(logger);
            logger.LogFile(delegateLogger.strErrorMessage);
          }
          finally
          {
            Monitor.Exit(logger);
          }
        }
      }, null);
      handles[i] = result.AsyncWaitHandle;
    }
    WaitHandle.WaitAll(handles);

当我步进VS2013中的代码时,在我的doWork方法中设置了一个被击中的断点,但在被击中后不久,WaitAll似乎返回了,应用程序也关闭了。我只为测试而注释掉了iArrReports中的第二个条目。

为什么我的申请要关闭?我认为WaitAll应该等到委托完全执行。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-07-17 12:19:12

将调试器设置为中断所有异常。您可能会发现,一个未处理的异常已经扼杀了该进程。

最好用TPL。就能避免这个错误。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24803135

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档