Хорошо, вот основной фон.Эта программа подключается к outlook / exchange и анализирует все почтовые сообщения, чтобы увидеть, какие из них зашифрованы.Одна из вещей, которую я хотел бы сделать, - это использовать многопоточность, чтобы уменьшить время, необходимое для сканирования сообщений.
В настоящее время код выглядит следующим образом:
foreach (Object item in folder.Items) {
//Checks for encryption and gets needed info and updates count
}
ИЯ бы хотел использовать функцию Parallel.ForEach.Мне было интересно, как я мог настроить это.Я попытался настроить выражение так, как оно есть сейчас, но я получаю сообщение о том, что тип объекта используется в качестве переменной.Любая помощь с этим будет принята с благодарностью.
Хорошо, макет, который мне дали, кажется правильным.Код выглядит сейчас так:
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
});
Теперь он работает без ошибок.Hurray.