Was this page helpful?
Your feedback about this content is important. Let us know what you think.
Additional feedback?
1500 characters remaining
TryUpdate Method

ConcurrentDictionary<TKey, TValue>.TryUpdate Method

.NET Framework 4.6 and 4.5

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
Assemblies:   mscorlib (in mscorlib.dll)
  System.Collections.Concurrent (in System.Collections.Concurrent.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.6, 4.5, 4

.NET Framework Client Profile

Supported in: 4

.NET for Windows Phone apps

Supported in: Windows Phone 8.1

Portable Class Library

Supported in: Portable Class Library
Show:
© 2015 Microsoft