さて、これが基本的な背景です。このプログラムは Outlook/Exchange に接続し、すべてのメール メッセージを解析して暗号化されているメッセージを確認します。私がやりたいことの 1 つは、マルチスレッドを使用して、メッセージをスキャンするのにかかる時間を短縮することです。
現在、コードは次のようになっています。
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
});
現在、エラーなしで実行されます。万歳。