Export (0) Print
Expand All
This topic has not yet been rated - Rate this topic

ConcurrentDictionary<TKey, TValue>.TryUpdate Method

Compares the existing value for the specified key with a specified value, and if they are equal, updates the key with a third value.

Namespace:  System.Collections.Concurrent
Assembly:  mscorlib (in mscorlib.dll)
public bool TryUpdate(
	TKey key,
	TValue newValue,
	TValue comparisonValue
)

Parameters

key
Type: TKey

The key whose value is compared with comparisonValue and possibly replaced.

newValue
Type: TValue

The value that replaces the value of the element that has the specified key if the comparison results in equality.

comparisonValue
Type: TValue

The value that is compared to the value of the element that has the specified key.

Return Value

Type: System.Boolean
true if the value with key was equal to comparisonValue and was replaced with newValue; otherwise, false.
ExceptionCondition
ArgumentNullException

key is null.

The following example shows how to call the TryUpdate method:

class CD_TryXYZ
{
        // Demonstrates: 
        //      ConcurrentDictionary<TKey, TValue>.TryAdd() 
        //      ConcurrentDictionary<TKey, TValue>.TryUpdate() 
        //      ConcurrentDictionary<TKey, TValue>.TryRemove() 
        static void Main()
        {
            int numFailures = 0; // for bookkeeping 

            // Construct an empty dictionary
            ConcurrentDictionary<int, String> cd = new ConcurrentDictionary<int, string>();

            // This should work 
            if (!cd.TryAdd(1, "one"))
            {
                Console.WriteLine("CD.TryAdd() failed when it should have succeeded");
                numFailures++;
            }

            // This shouldn't work -- key 1 is already in use 
            if (cd.TryAdd(1, "uno"))
            {
                Console.WriteLine("CD.TryAdd() succeeded when it should have failed");
                numFailures++;
            }

            // Now change the value for key 1 from "one" to "uno" -- should work
            if (!cd.TryUpdate(1, "uno", "one"))
            {
                Console.WriteLine("CD.TryUpdate() failed when it should have succeeded");
                numFailures++;
            }

            // Try to change the value for key 1 from "eine" to "one"  
            //    -- this shouldn't work, because the current value isn't "eine" 
            if (cd.TryUpdate(1, "one", "eine"))
            {
                Console.WriteLine("CD.TryUpdate() succeeded when it should have failed");
                numFailures++;
            }

            // Remove key/value for key 1.  Should work. 
            string value1;
            if (!cd.TryRemove(1, out value1))
            {
                Console.WriteLine("CD.TryRemove() failed when it should have succeeded");
                numFailures++;
            }

            // Remove key/value for key 1.  Shouldn't work, because I already removed it 
            string value2;
            if (cd.TryRemove(1, out value2))
            {
                Console.WriteLine("CD.TryRemove() succeeded when it should have failed");
                numFailures++;
            }

            // If nothing went wrong, say so 
            if (numFailures == 0) Console.WriteLine("  OK!");
        }
}

.NET Framework

Supported in: 4.5.1, 4.5, 4

.NET Framework Client Profile

Supported in: 4

Portable Class Library

Supported in: Portable Class Library

.NET for Windows Store apps

Supported in: Windows 8

.NET for Windows Phone apps

Supported in: Windows Phone 8.1

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Server Core Role not supported), Windows Server 2008 R2 (Server Core Role supported with SP1 or later; Itanium not supported)

The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.

Did you find this helpful?
(1500 characters remaining)
Thank you for your feedback
Show:
© 2014 Microsoft. All rights reserved.