Приложение 2. Пример асинхронной обработки данных
using System; using System.Data; using System.Data.LinterClient; using System.Threading; namespace Test { class Program { /* Асинхронная работа */ static void Main(string[] args) { /* Создание тестовой таблицы */ CreateDataTable(); /* Создание разных нитей для поиска минимального * и максимального значений в таблице */ Thread findMinThread = new Thread(FindMin); Thread findMaxThread = new Thread(FindMax); /* Старт нитей */ findMinThread.Start(); findMaxThread.Start(); } static private void FindMin() { Console.WriteLine("Поиск минимального значения..."); LinterDbConnection conn = new LinterDbConnection(); conn.ConnectionString = GetConnectionString(); conn.Open(); LinterDbCommand comm = conn.CreateCommand(); comm.Connection = conn; comm.CommandText = "SELECT MIN(X) FROM T"; object result = comm.ExecuteScalar(); conn.Close(); /* Имитируем длительную работу */ Thread.Sleep(5000); Console.WriteLine("Минимальное значение: " + result); } static private void FindMax() { Console.WriteLine("Поиск максимального значения..."); LinterDbConnection conn = new LinterDbConnection(); conn.ConnectionString = GetConnectionString(); conn.Open(); LinterDbCommand comm = conn.CreateCommand(); comm.Connection = conn; comm.CommandText = "SELECT MAX(X) FROM T"; object result = comm.ExecuteScalar(); conn.Close(); /* Имитируем длительную работу */ Thread.Sleep(7000); Console.WriteLine("Максимальное значение: " + result); } static private void CreateDataTable() { Console.Write("Создание тестовой таблицы..."); LinterDbConnection conn = new LinterDbConnection(); conn.ConnectionString = GetConnectionString(); conn.Open(); LinterDbCommand comm = conn.CreateCommand(); comm.Connection = conn; comm.CommandText = "CREATE OR REPLACE TABLE T(X REAL)"; comm.ExecuteNonQuery(); comm.CommandText = "INSERT INTO T (X) VALUES (RAND())"; for (int i = 0; i < = 10000; i++) { comm.ExecuteNonQuery(); } conn.Close(); Console.WriteLine("завершено."); } static private string GetConnectionString() { /* Чтобы не хранить строку подключения в коде, вы можете * получить ее из файла конфигурации */ return "Data Source=LOCAL;User ID=SYSTEM;Password=MANAGER8"; } } }