﻿<?xml version="1.0" encoding="utf-8"?><Type Name="ReviewLockUsedOnlyForOperationsOnVariablesRule" FullName="Gendarme.Rules.Concurrency.ReviewLockUsedOnlyForOperationsOnVariablesRule"><TypeSignature Language="C#" Value="public class ReviewLockUsedOnlyForOperationsOnVariablesRule : Gendarme.Framework.Rule, Gendarme.Framework.IMethodRule" /><TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit ReviewLockUsedOnlyForOperationsOnVariablesRule extends Gendarme.Framework.Rule implements class Gendarme.Framework.IMethodRule, class Gendarme.Framework.IRule" /><AssemblyInfo><AssemblyName>Gendarme.Rules.Concurrency</AssemblyName><AssemblyVersion>3.10.0.0</AssemblyVersion></AssemblyInfo><Base><BaseTypeName>Gendarme.Framework.Rule</BaseTypeName></Base><Interfaces><Interface><InterfaceName>Gendarme.Framework.IMethodRule</InterfaceName></Interface></Interfaces><Attributes><Attribute><AttributeName>Gendarme.Framework.EngineDependency(typeof(Gendarme.Framework.Engines.OpCodeEngine))</AttributeName></Attribute><Attribute><AttributeName>Gendarme.Framework.Problem("Using a lock to do only atomic operations on locals or fields is often overkill.")</AttributeName></Attribute><Attribute><AttributeName>Gendarme.Framework.Solution("If possible, use System.Threading.Interlocked class to improve throughput.")</AttributeName></Attribute></Attributes><Docs><summary>
            This rule checks if a lock is used only to perform operations on locals
            or fields.
            If the only purpose of that critical section is to make sure the variables
            are modified atomatically then the methods provided by
            System.Threading.Interlocked class will be more efficient.
            </summary><remarks>To be added.</remarks><example>
            Bad example:
            <code>
            lock (_lockObject) {
            	_counter++;
            }
            </code></example><example>
            Good example:
            <code>
            Interlocked.Increment(_counter);
            </code></example><example>
            Bad example:
            <code>
            lock (_lockObject) {
            	_someSharedObject = anotherObject;
            }
            </code></example><example>
            Good example:
            <code>
            Interlocked.Exchange(_someSharedObject, anotherObject);
            </code></example></Docs><Members><Member MemberName=".ctor"><MemberSignature Language="C#" Value="public ReviewLockUsedOnlyForOperationsOnVariablesRule ();" /><MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor() cil managed" /><MemberType>Constructor</MemberType><AssemblyInfo><AssemblyVersion>3.10.0.0</AssemblyVersion></AssemblyInfo><Parameters /><Docs><summary>To be added.</summary><remarks>To be added.</remarks></Docs></Member><Member MemberName="CheckMethod"><MemberSignature Language="C#" Value="public Gendarme.Framework.RuleResult CheckMethod (Mono.Cecil.MethodDefinition method);" /><MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance valuetype Gendarme.Framework.RuleResult CheckMethod(class Mono.Cecil.MethodDefinition method) cil managed" /><MemberType>Method</MemberType><AssemblyInfo><AssemblyVersion>3.10.0.0</AssemblyVersion></AssemblyInfo><ReturnValue><ReturnType>Gendarme.Framework.RuleResult</ReturnType></ReturnValue><Parameters><Parameter Name="method" Type="Mono.Cecil.MethodDefinition" /></Parameters><Docs><param name="method">To be added.</param><summary>To be added.</summary><returns>To be added.</returns><remarks>To be added.</remarks></Docs></Member><Member MemberName="Initialize"><MemberSignature Language="C#" Value="public override void Initialize (Gendarme.Framework.IRunner runner);" /><MemberSignature Language="ILAsm" Value=".method public hidebysig virtual instance void Initialize(class Gendarme.Framework.IRunner runner) cil managed" /><MemberType>Method</MemberType><AssemblyInfo><AssemblyVersion>3.10.0.0</AssemblyVersion></AssemblyInfo><ReturnValue><ReturnType>System.Void</ReturnType></ReturnValue><Parameters><Parameter Name="runner" Type="Gendarme.Framework.IRunner" /></Parameters><Docs><param name="runner">To be added.</param><summary>To be added.</summary><remarks>To be added.</remarks></Docs></Member></Members></Type>