好的,这是基本的背景。该程序连接到 Outlook/Exchange 并解析所有邮件消息以查看哪些是加密的。我想做的一件事是使用多线程来减少扫描消息所需的时间。
目前代码如下所示:
foreach (Object item in folder.Items) {
//Checks for encryption and gets needed info and updates count
}
我想改用 Parallel.ForEach 函数。我想知道如何设置它。我尝试将表达式设置为现在的样子,但我收到一条错误消息,指出 Object 类型正在用作变量。对此的任何帮助将不胜感激。
好的,我得到的布局似乎是正确的。代码现在看起来像这样:
Parallel.ForEach(folder.Items, item =>
{
//does stuff
});
我现在收到以下错误:
错误 15 无法从用法中推断方法 System.Threading.Tasks.Parallel.ForEach(System.Collections.Concurrent.OrderablePartitioner, System.Action)' 的类型参数。尝试明确指定类型参数。
有任何想法吗?谢谢你们的帮助,不胜感激。
好的,我找到了这个网站: http: //blogs.msdn.com/b/pfxteam/archive/2010/03/02/9971804.aspx,它给了我错误所需的答案。我只需要通过制作一个强制转换功能将集合更改为通用集合。
static IEnumerable<object> Cast(IEnumerable source)
{
foreach (object o in source)
yield return o;
}
然后将原图调整为
Parallel.ForEach(Cast(folder.Items), item =>
{
//does stuff
});
现在它运行没有错误。欢呼。