Поделиться через


ThreadingTools.ApplyChangeOptimistically Метод

Определение

Перегрузки

ApplyChangeOptimistically<T,TArg>(T, TArg, Func<T,TArg,T>)

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

ApplyChangeOptimistically<T>(T, Func<T,T>)

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

ApplyChangeOptimistically<T,TArg>(T, TArg, Func<T,TArg,T>)

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

public:
generic <typename T, typename TArg>
 where T : class static bool ApplyChangeOptimistically(T % hotLocation, TArg applyChangeArgument, Func<T, TArg, T> ^ applyChange);
public static bool ApplyChangeOptimistically<T,TArg> (ref T hotLocation, TArg applyChangeArgument, Func<T,TArg,T> applyChange) where T : class;
static member ApplyChangeOptimistically : 'T * 'Arg * Func<'T, 'Arg, 'T (requires 'T : null and 'T : null)> -> bool (requires 'T : null)
Public Function ApplyChangeOptimistically(Of T As Class, TArg As Class) (ByRef hotLocation As T, applyChangeArgument As TArg, applyChange As Func(Of T, TArg, T)) As Boolean

Параметры типа

T

Тип данных, к которые применяется изменение.

TArg

Тип аргумента, передаваемого в applyChange.

Параметры

hotLocation
T

Поле, которое может обрабатываться несколькими потоками.

applyChangeArgument
TArg

Аргумент для передачи в applyChange.

applyChange
Func<T,TArg,T>

Функция, которая получает как неизменное значение, так и applyChangeArgument, затем возвращает измененное значение.

Возвращаемое значение

true, если значение расположения изменилось после применения результата функции applyChange; false, если значение расположения осталось неизменным, поскольку последний вызов applyChange вернул существующее значение.

Комментарии

Используйте эту перегрузку, когда applyChange требуется один элемент, как это обычно происходит при обновлении неизменяемых типов коллекций. Передав элемент в качестве операнда метода, вызывающий объект может избежать выделения объекта закрытия для каждого вызова.

Применяется к

ApplyChangeOptimistically<T>(T, Func<T,T>)

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

public:
generic <typename T>
 where T : class static bool ApplyChangeOptimistically(T % hotLocation, Func<T, T> ^ applyChange);
public static bool ApplyChangeOptimistically<T> (ref T hotLocation, Func<T,T> applyChange) where T : class;
static member ApplyChangeOptimistically : 'T * Func<'T, 'T (requires 'T : null and 'T : null)> -> bool (requires 'T : null)
Public Function ApplyChangeOptimistically(Of T As Class) (ByRef hotLocation As T, applyChange As Func(Of T, T)) As Boolean

Параметры типа

T

Тип данных.

Параметры

hotLocation
T

Поле, которое может обрабатываться несколькими потоками.

applyChange
Func<T,T>

Функция, которая получает неизменное значение и возвращает измененное значение.

Возвращаемое значение

true, если значение расположения изменилось после применения результата функции applyChange; false, если значение расположения осталось неизменным, поскольку последний вызов applyChange вернул существующее значение.

Применяется к