CSharpTest.Net
TryUpdate(TKey,KeyValueUpdate<TKey,TValue>) Method
See Also  Example Send Feedback Download Help File
CSharpTest.Net.Library Assembly > CSharpTest.Net.Collections Namespace > SynchronizedDictionary<TKey,TValue> Class > TryUpdate Method : TryUpdate(TKey,KeyValueUpdate<TKey,TValue>) Method

key
fnUpdate

Glossary Item Box

Modify the value associated with the result of the provided update method as an atomic operation, Allows for reading/writing a single record within the tree lock. Be cautious about the behavior and performance of the code provided as it can cause a dead-lock to occur. If the method returns an instance who .Equals the original, no update is applied.

Syntax

Visual Basic (Declaration) 
Public Overloads Function TryUpdate( _
   ByVal key As TKey, _
   ByVal fnUpdate As CSharpTest.Net.Collections.KeyValueUpdate(Of TKey,TValue) _
) As Boolean
C# 
public bool TryUpdate( 
   TKey key,
   CSharpTest.Net.Collections.KeyValueUpdate<TKey,TValue> fnUpdate
)

Parameters

key
fnUpdate

Example

Library/Library.Test/TestSynchronizedCollections.cs

C#Copy Code
SynchronizedDictionary<int, string> data =
    new SynchronizedDictionary<int, string>(new Dictionary<int, string>());

Assert.IsTrue(data.TryAdd(1, "a"));
Assert.IsFalse(data.TryAdd(1, "a"));

Assert.IsTrue(data.TryUpdate(1, "a"));
Assert.IsTrue(data.TryUpdate(1, "c"));
Assert.IsTrue(data.TryUpdate(1, "d", "c"));
Assert.IsFalse(data.TryUpdate(1, "f", "c"));
Assert.AreEqual("d", data[1]);
Assert.IsTrue(data.TryUpdate(1, "a", data[1]));
Assert.AreEqual("a", data[1]);
Assert.IsFalse(data.TryUpdate(2, "b"));

string val;
Assert.IsTrue(data.TryRemove(1, out val) && val == "a");
Assert.IsFalse(data.TryRemove(2, out val));
Assert.AreNotEqual(val, "a");

Assert.IsFalse(data.TryUpdate(1, (k, x) => x.ToUpper()));
data[1] = "a";
data[1] = "b";
Assert.IsTrue(data.TryUpdate(1, (k, x) => x.ToUpper()));
Assert.AreEqual("B", data[1]);
VB.NETCopy Code
Dim data As New SynchronizedDictionary(Of Integer, String)(New Dictionary(Of Integer, String)())

Assert.IsTrue(data.TryAdd(1, "a"))
Assert.IsFalse(data.TryAdd(1, "a"))

Assert.IsTrue(data.TryUpdate(1, "a"))
Assert.IsTrue(data.TryUpdate(1, "c"))
Assert.IsTrue(data.TryUpdate(1, "d", "c"))
Assert.IsFalse(data.TryUpdate(1, "f", "c"))
Assert.AreEqual("d", data(1))
Assert.IsTrue(data.TryUpdate(1, "a", data(1)))
Assert.AreEqual("a", data(1))
Assert.IsFalse(data.TryUpdate(2, "b"))

Dim val As String
Assert.IsTrue(data.TryRemove(1, val) AndAlso val = "a")
Assert.IsFalse(data.TryRemove(2, val))
Assert.AreNotEqual(val, "a")

Assert.IsFalse(data.TryUpdate(1, Function(k, x) x.ToUpper()))
data(1) = "a"
data(1) = "b"
Assert.IsTrue(data.TryUpdate(1, Function(k, x) x.ToUpper()))
Assert.AreEqual("B", data(1))

Requirements

Target Platforms: Windows XP, Windows Server 2003, Windows Vista, Windows Server 2008, Windows 7

See Also

Generated with Document! X 2011 by Innovasys