【发布时间】:2014-06-24 06:19:43
【问题描述】:
在下面的函数中,总是将相同的user 对象传递给DoRestCall 方法
(我确实登录了DoRestCall 方法,并且它在user 对象中具有相同的第一个数据)
我需要使用 Parallel.ForEach 而不是 Threadpool
private void CreateUser(DataServiceCollection<User> epUsers)
{
foreach (User user in epUsers)
{
try
{
ThreadPool.QueueUserWorkItem(new WaitCallback(f =>
{
DoRestCall(string.Format("MESSAGE-TYPE=UserEnrollmentCreate&PAYLOAD={0}",
GenarateRequestUserData(user)), true);
}));
}
catch (Exception ex)
{
_logger.Error("Error in CreateUser " + ex.Message);
}
}
}
【问题讨论】:
-
如果您正在进行 REST 调用,为什么要使用
ThreadPool进行 I/O 绑定工作?您使用的是哪个版本的 .NET 框架 -
是的,我正在休息打电话有什么缺点吗? C# 和 .net4.0
-
是的。你分配一个ThreadPool线程只是为了阻塞等待REST调用返回,很浪费资源。
-
有什么替代品吗?
标签: c# multithreading threadpool parallel.foreach