LINUX.ORG.RU

[C#] Parallel.Foreach


0

1

Решил прокачать скилы в параллельном кодинге. Но как-то странно себя компилятор ведет: выдает ошибку «Не удалось изменить возвращаемое значение для „System.Collections.Generic.Dictionary<int,Proxify.Proxy>.this[int]“, т.к. оно не является переменной»

ЧЯДНТ?

public static Dictionary<int,Proxy> Hosts = new Dictionary<int,Proxy>();
public static void GetHostNames()
        {
            ParallelOptions popts = new ParallelOptions();
            popts.MaxDegreeOfParallelism = 256;
            Parallel.ForEach<int>(Hosts.Keys, popts, p =>
            {
                try
                {
                    Hosts[p].Hostname = Dns.GetHostEntry(Hosts[p].IP).HostName;
                }
                catch 
                {
                    Hosts[p].Hostname = "Error";
                }
            }
            );
        }
Deleted

Ответ на: комментарий от Sectoid

Вот такой код собрался «на ура»

using System;
using System.Collections.Generic;
using System.Net;
using System.Threading.Tasks;

public class Proxy
{
  public IPAddress IP { get; set; }
  public string Hostname { get; set; }
}

public static class Test
{
  public static Dictionary<int,Proxy> Hosts = new Dictionary<int,Proxy>();
  public static void GetHostNames()
  {
    ParallelOptions popts = new ParallelOptions();
    popts.MaxDegreeOfParallelism = 256;
    Parallel.ForEach<int>(Hosts.Keys, popts, p =>
      {
        try
        {
          Hosts[p].Hostname = Dns.GetHostEntry(Hosts[p].IP).HostName;
        }
        catch 
        {
          Hosts[p].Hostname = "Error";
        }
      }
      );
  }
}

sectoid@nyarly:~ $ dmcs -t:library test.cs
sectoid@nyarly:~ $ dmcs --version
Mono C# compiler version 2.10.1.0
Sectoid ★★★★★
()
Ответ на: комментарий от Deleted

там сказано что структура - это value-тип, и всегда копируется
скажи спасибо что компилятор отсек, а то дебажить такое можно долго и нудно ))

dib2 ★★★★★
()

И даже ни одного вопля про «не нужен». В лесу че-то сдохло :)

slackwarrior ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.