C#、IAsyncResult 和线程池

发布于 2024-07-11 23:24:42 字数 653 浏览 5 评论 0原文

我使用 Action.BeginInvoke() 方法,这是否使用线程池?

我有以下 C# 代码:

    List<FileHash> hashList1 = hashList.Where((x, ind) => ind % 2 == 0).ToList();
    List<FileHash> hashList2 = hashList.Where((x, ind) => ind % 2 == 1).ToList();

    Action<object> oddWork = CalcHash;
    Action<object> evenWork = CalcHash;

    IAsyncResult evenHandle = evenWork.BeginInvoke(hashList1, null, null);
    IAsyncResult oddHandle = oddWork.BeginInvoke(hashList2, null, null);

    evenWork.EndInvoke(evenHandle); 
    oddWork.EndInvoke(oddHandle);

线程池是否在幕后使用? 或者系统是否创建普通线程?

I use the Action<object>.BeginInvoke() method, does this use the thread pool or not?

I have the following C# code:

    List<FileHash> hashList1 = hashList.Where((x, ind) => ind % 2 == 0).ToList();
    List<FileHash> hashList2 = hashList.Where((x, ind) => ind % 2 == 1).ToList();

    Action<object> oddWork = CalcHash;
    Action<object> evenWork = CalcHash;

    IAsyncResult evenHandle = evenWork.BeginInvoke(hashList1, null, null);
    IAsyncResult oddHandle = oddWork.BeginInvoke(hashList2, null, null);

    evenWork.EndInvoke(evenHandle); 
    oddWork.EndInvoke(oddHandle);

Is the thread pool used behind the scenes or not? Or does the system create normal threads?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

谎言 2024-07-18 23:24:42

是的,这项工作将在线程池中进行。 MSDN 中的此页面深入介绍了 BeginInvoke 的工作原理:

http://msdn.microsoft .com/en-us/library/2e08f6yc.aspx

Yes this work will occur in the thread pool. This page in MSDN goes into depth on how BeginInvoke works:

http://msdn.microsoft.com/en-us/library/2e08f6yc.aspx

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文