Здравствуйте, misha_v, Вы писали:
_>Программа на С# кладет в MSSQL и достает обратно BLOB — данные.
_>Все работает , но окошко замирает до окончания выполнения SqlCommand (Insert или Select). КАК отобразить на форме, что программа не висит, а выполняет запрос??? Как узнать время выполнения и процент?(windows ведь показывает при копировании файлов например)???
Выполняй в отдельном потоке. Вот пример:
using System.Threading;
using System.IO;
using System.Data;
using System.Data.SqlClient;
namespace Chapter 02
{
public class Threaded Resource : System.Windows.Forms.Form
{
public void Button1 Click(object sender , System.EventArgs e)
{
Thread t = new Thread(new ThreadStart(QueryData));
t.Start();
}
public void QueryData()
{
SqlDataReader objReader;
SqlConnection objConn;
SqlCommand objCommand;
int intEmployeeID;
string strFirstName;
string strTitle;
int intReportsTo;
objConn = new SqlConnection("server=RemoteServer;" +
"UID=RemoteUser;PWD=Password;database=northwind");
objCommand = new SqlCommand("SELECT EmployeeID, FirstName, " +
"Title, ReportsTo FROM Employees", objConn);
objConn.Open();
objReader = objCommand.ExecuteReader(
CommandBehavior.CloseConnection );
while (objReader.Read())
{
intEmployeeID = objReader.GetInt32(0);
strFirstName = objReader.GetString(1);
strTitle = objReader.GetString(2);
if(objReader.IsDBNull(3))
intReportsTo = 0;
else
intReportsTo = objReader.GetInt32(3);
listBox1.Items.Add(intEmployeeID.ToString() + " " +
strFirstName + " " + strTitle + " " +
intReportsTo.ToString());
}
objReader.Close();
objConn.Close();
}
public static void Main()
{
Application.Run(new Threaded_Resource());
}
}
}
... << RSDN@Home 1.1.4 @@subversion >>