Cleaning up a session
If your application uses the using keyword, which implements the
IDisposable interface, the Session object is automatically cleaned up at
the end of the using block. If your application does not implement
using, then you need to release the session when you've completed the
transaction.
The Session class contains a Dispose method, which cleans up
the 1010data Insights Platform session when it is invoked. Depending on the login type
that was used to create the Insights Platform session, there are a few different ways
they might be cleaned up. If you are a single user logged in with
LoginType.POSSESS, the session continues to run. If you're a single
user logged in with LoginType.KILL or
LoginType.NOKILL, the platform session is terminated. A SAM pool user's
session is released back into the pool; it is never terminated before being
released.
Cleaning up a platform session when it is no longer needed is particularly important if you
have multiple users sharing a pool of IDs (SAM pool). Waiting for the garbage collector
to clean up Session objects may result in a pool that appears fully
utilized, but is waiting for Session objects to be destroyed. For more
information about SAM pools, see Shared Access Management (SAM).
The most efficient and effective way to release user IDs back to the pool is to invoke the
Dispose method, either by explicitly calling it or employing
using, which invokes it at the end of the block.
Via the using statement:
using System;
using TenTenSDK;
public class DocumentationExample {
public static void PrintTable(Session testSession, String path) {
Query exampleQuery = new Query(path,
"<sel value=""(between(i_;1;10))""/>");
using(Table resultTable = testSession.RunQuery(exampleQuery)) {
Console.WriteLine(String.Join("\t",
resultTable.Columns.Select(c => c.Info.Title)));
foreach(Row r in resultTable.Rows) {
Console.WriteLine(String.Join("\t",
r.Select(d => d.ToString())));
}
}
}
public static void Main() {
Uri gateway = new Uri("https://www2.1010data.com/cgi-bin/gw.k");
String user = "[USER_NAME]";
String pwd = "[USER_PASSWORD]";
String path = "[TABLE_PATH]";
using(Session testSession = new Session(gateway, user, pwd,
LoginType.POSSESS)) {
PrintTable(testSession, path);
}
}
}
[USER_NAME],
[USER_PASSWORD], and
[TABLE_PATH] are placeholders for valid
Insights Platform user name, password, and table path.Explicitly calling the Dispose method:
using System;
using TenTenSDK;
public class DocumentationExample {
public static void PrintTable(Session testSession, String path) {
Query exampleQuery = new Query(path,
"<sel value=""(between(i_;1;10))""/>");
Table resultTable = testSession.RunQuery(exampleQuery);
Console.WriteLine(String.Join("\t",
resultTable.Columns.Select(c => c.Info.Title)));
foreach(Row r in resultTable.Rows) {
Console.WriteLine(String.Join("\t",
r.Select(d => d.ToString())));
}
}
public static void Main() {
Uri gateway = new Uri("https://www2.1010data.com/cgi-bin/gw.k");
String user = "[USER_NAME]";
String pwd = "[USER_PASSWORD]";
String path = "[TABLE_PATH]";
Session testSession = new Session(gateway, user, pwd,
LoginType.POSSESS);
PrintTable(testSession, path);
testSession.Dispose();
}
}
[USER_NAME],
[USER_PASSWORD], and
[TABLE_PATH] are placeholders for valid
Insights Platform user name, password, and table path.