C # Thread Safe Deep Copy

Я читал множество других вопросов, а также множество поисковых запросов в Google, и мне не удалось найти четкого решения.

Основываясь на некоторых передовых методах, которые я прочитал, статические методы класса следует создавать потокобезопасными, а члены экземпляра должны оставлять потокобезопасность потребителям.

Я хотел бы реализовать метод глубокого копирования для класс. Сам класс имеет другие члены ссылочного типа. Из этого поста похоже, что вам нужно указать новую наблюдаемую последовательность ...

Есть ли способ иметь наблюдаемую последовательность для возобновления выполнения со следующим элементом в последовательности в случае возникновения ошибки? Из этого сообщения похоже, что вам нужно указать новую наблюдаемую последовательность в Catch (), чтобы возобновить выполнение, но что, если вам нужно просто продолжить обработку со следующим элементом в последовательности вместо этого? Есть ли способ добиться этого?

ОБНОВЛЕНИЕ: Сценарий такой: У меня есть несколько элементов, которые мне нужно обработать. Обработка состоит из нескольких этапов. я имею разложил шаги на задачи, которые хотелось бы составить. Я следовал рекомендациям для ToObservable (), опубликованным здесь преобразовать задачи в наблюдаемые для композиции. так что в основном я делаю что-то вроде этого -

foreach(element in collection)
{
   var result = from aResult in DoAAsync(element).ToObservable() 
         from bResult in DoBAsync(aResult).ToObservable() 
         from cResult in DoCAsync(bResult).ToObservable() 
         select cResult;
   result.subscribe( register on next and error handlers here)
 }

или я мог бы что-то вроде этого:

var result = 
        from element in collection.ToObservable() 
        from aResult in DoAAsync(element).ToObservable() 
         from bResult in DoBAsync(aResult).ToObservable() 
         from cResult in DoCAsync(bResult).ToObservable() 
         select cResult;

Как лучше всего продолжить обработку других элементов, даже если, скажем, обработка один из элементов вызывает исключение. Я хотел бы иметь возможность регистрировать ошибку и в идеале двигаться дальше.

12
задан Abhijeet Patel 20 May 2011 в 21:07
поделиться