Please ensure Javascript is enabled for purposes of website accessibility
Powered by Zoomin Software. For more details please contactZoomin

AF SDK Reference

AFChangeInfo.Refresh Method

  • Last UpdatedNov 18, 2025
  • 6 minute read
AFChangeInfo.Refresh Method
Refreshes the object represented by change information structure if it is currently loaded in the client.

Namespace:  OSIsoft.AF
Assembly:  OSIsoft.AFSDK (in OSIsoft.AFSDK.dll) Version: 3.1.1.1182

Syntax

public static void Refresh(
	PISystem system,
	IEnumerable<AFChangeInfo> changeInfo
)
Public Shared Sub Refresh ( 
	system As PISystem,
	changeInfo As IEnumerable(Of AFChangeInfo)
)

Dim system As PISystem
Dim changeInfo As IEnumerable(Of AFChangeInfo)

AFChangeInfo.Refresh(system, changeInfo)
public:
static void Refresh(
	PISystem^ system, 
	IEnumerable<AFChangeInfo>^ changeInfo
)
static member Refresh : 
        system : PISystem * 
        changeInfo : IEnumerable<AFChangeInfo> -> unit 

Parameters

system
Type: OSIsoft.AFPISystem
The PISystem to be used when searching for the object.
changeInfo
Type: System.Collections.GenericIEnumerableAFChangeInfo
The list of change information for the items that should be updated.

Remarks

The objects that are already loaded in the SDK will be updated in bulk similar to calling the Refresh method on each object. The objects that are not already loaded will not be updated.

Examples

// This example demonstrates getting changes made by other users
//  and refreshing the objects.

// Get the System and System Cookie
PISystem myPISystem = new PISystems().DefaultPISystem;
object sysCookie = myPISystem.GetFindChangedItemsCookie(searchSandbox: false);

// Wait for changes to be made...
//=======================================================

// Find changes made by other users.
List<AFChangeInfo> list = new List<AFChangeInfo>();
int resultsPerPage = 1000;
while (true)
{
    var results = myPISystem.FindChangedItems(false, true, resultsPerPage, sysCookie, out sysCookie);
    if ((results?.Count ?? 0) == 0) break;
    list.AddRange(results);
}

// Refresh objects that have been changed.
AFChangeInfo.Refresh(myPISystem, list);

// Find the objects that have been changed.
foreach (AFChangeInfo info in list)
{
    AFObject myObj = info.FindObject(myPISystem, false);
    Console.WriteLine("Found changed object: {0}", myObj);
}
' This example demonstrates getting changes made by other users
'  and refreshing the objects.

' Get the System and System Cookie
Dim myPISystem As PISystem = New PISystems().DefaultPISystem
Dim sysCookie As Object = myPISystem.GetFindChangedItemsCookie(searchSandbox:=False)

' Wait for changes to be made...
'=======================================================


' Find changes made by other users.
Dim list As New List(Of AFChangeInfo)()
Dim resultsPerPage As Integer = 1000
While True
    Dim results As IList(Of AFChangeInfo) _
        = myPISystem.FindChangedItems(False, True, resultsPerPage, sysCookie, sysCookie)
    If ((results Is Nothing) OrElse (results.Count = 0)) Then
        Exit While
    End If

    list.AddRange(results)
End While

' Refresh objects that have been changed.
AFChangeInfo.Refresh(myPISystem, list)

' Find the objects that have been changed.
For Each info As AFChangeInfo In list
    Dim myObj As AFObject = info.FindObject(myPISystem, False)
    Console.WriteLine("Found changed object: {0}", myObj)
Next

No code example is currently available or this language may not be supported.

No code example is currently available or this language may not be supported.

// This example demonstrates persisting and restoring the cookie
//  using the XmlSerializer. Other serializers could also be used.
//  Then the cookie is restored and used to get changes made while
//  the application was shut down.

// Get the System and Database and their Cookie Values
PISystem myPISystem = new PISystems().DefaultPISystem;
AFDatabase myDB = myPISystem.Databases.DefaultDatabase;

object sysCookie = myPISystem.GetFindChangedItemsCookie(searchSandbox: false);
object dbCookie;
myDB.FindChangedItems(false, int.MaxValue, null, out dbCookie);

// Persist the cookie if you want to save to pick up changes
//  where you left off after restarting application.
string tmpDir = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData);
string sysCookieFile = Path.Combine(tmpDir, "AFSysCookie.xml");
string dbCookieFile = Path.Combine(tmpDir, "AFDbCookie.xml");
XmlSerializer serializer = new XmlSerializer(typeof(object[]));
using (var stream = File.Create(sysCookieFile))
{
    serializer.Serialize(stream, sysCookie);
}
using (var stream = File.Create(dbCookieFile))
{
    serializer.Serialize(stream, dbCookie);
}

// Shut down application, and wait for changes to be made...
//=======================================================

// After application restarts, reload persisted cookies.
using (var stream = File.OpenRead(sysCookieFile))
{
    sysCookie = serializer.Deserialize(stream);
}
using (var stream = File.OpenRead(dbCookieFile))
{
    dbCookie = serializer.Deserialize(stream);
}

// Find changes made while application not running.
List<AFChangeInfo> list = new List<AFChangeInfo>();
int resultsPerPage = 1000;
while (true)
{
    var results = myPISystem.FindChangedItems(false, resultsPerPage, sysCookie, out sysCookie);
    if ((results?.Count ?? 0) == 0) break;
    list.AddRange(results);
}
while (true)
{
    var results = myDB.FindChangedItems(false, resultsPerPage, dbCookie, out dbCookie);
    if ((results?.Count ?? 0) == 0) break;
    list.AddRange(results);
}

// Find the objects that have been changed.
foreach (AFChangeInfo info in list)
{
    AFObject myObj = info.FindObject(myPISystem, false);
    Console.WriteLine("Found changed object: {0}", myObj);
}
' This example demonstrates persisting and restoring the cookie
'  using the XmlSerializer. Other serializers could also be used.
'  Then the cookie is restored and used to get changes made while
'  the application was shut down.

' Get the System and Database and their Cookie Values
Dim myPISystem As PISystem = New PISystems().DefaultPISystem
Dim myDB As AFDatabase = myPISystem.Databases.DefaultDatabase

Dim sysCookie As Object = myPISystem.GetFindChangedItemsCookie(searchSandbox:=False)
Dim dbCookie As Object = Nothing
myDB.FindChangedItems(False, Integer.MaxValue, Nothing, dbCookie)

' Persist the cookie if you want to save to pick up changes
'  where you left off after restarting application.
Dim tmpDir As String = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData)
Dim sysCookieFile As String = Path.Combine(tmpDir, "AFSysCookie.xml")
Dim dbCookieFile As String = Path.Combine(tmpDir, "AFDbCookie.xml")
Dim serializer As XmlSerializer = New XmlSerializer(GetType(Object()))
Using stream As FileStream = File.Create(sysCookieFile)
    serializer.Serialize(stream, sysCookie)
End Using
Using stream As FileStream = File.Create(dbCookieFile)
    serializer.Serialize(stream, dbCookie)
End Using

' Shut down application, and wait for changes to be made...
'=======================================================


' After application restarts, reload persisted cookies.
Using stream As FileStream = File.OpenRead(sysCookieFile)
    sysCookie = serializer.Deserialize(stream)
End Using
Using stream As FileStream = File.OpenRead(dbCookieFile)
    dbCookie = serializer.Deserialize(stream)
End Using

' Find changes made while application not running.
Dim list As List(Of AFChangeInfo) = New List(Of AFChangeInfo)
Dim resultsPerPage As Integer = 1000
While True
    Dim results As IList(Of AFChangeInfo) _
        = myPISystem.FindChangedItems(False, resultsPerPage, sysCookie, sysCookie)
    If ((results Is Nothing) OrElse (results.Count = 0)) Then
        Exit While
    End If

    list.AddRange(results)
End While
While True
    Dim results As IList(Of AFChangeInfo) _
        = myDB.FindChangedItems(False, resultsPerPage, dbCookie, dbCookie)
    If ((results Is Nothing) OrElse (results.Count = 0)) Then
        Exit While
    End If

    list.AddRange(results)
End While

list.AddRange(myPISystem.FindChangedItems(False, Integer.MaxValue, sysCookie, sysCookie))
list.AddRange(myDB.FindChangedItems(False, Integer.MaxValue, dbCookie, dbCookie))

' Find the objects that have been changed.
For Each info As AFChangeInfo In list
    Dim myObj As AFObject = info.FindObject(myPISystem, False)
    Console.WriteLine("Found changed object: {0}", myObj)
Next

No code example is currently available or this language may not be supported.

No code example is currently available or this language may not be supported.

Version Information

AFSDK

Supported in: 3.1.1, 3.1.0, 3.0.2, 3.0.1, 3.0.0, 2.10.11, 2.10.5, 2.10.0, 2.10, 2.9.5, 2.9, 2.8.5, 2.8, 2.7.5, 2.7, 2.6

See Also

In This Topic
TitleResults for “How to create a CRG?”Also Available in