andy_ee
asked on
Retreiving a list of available SQL Servers in a new thread.
I use the snippet listed below to get a list of available SQL Server instances. I would like to find an example of how to execute this in a separate thread so as not have the application appear "frozen".
Thanks!
Thanks!
DataTable dt = SmoApplication.EnumAvailableSqlServers(false);
ListServers.DisplayMember = "name";
ListServers.ValueMember = "name";
ListServers.DataSource = dt.DefaultView;
System.Threading.Thread.Start
(
new ThreadStart
(delegate
{
DataTable dt = SmoApplication.EnumAvailableSqlServers(false);
ListServers.DisplayMember = "name";
ListServers.ValueMember = "name";
ListServers.DataSource = dt.DefaultView;
}
));
From The Web page....
using System;
using System.Threading;
public class Test
{
static void Main()
{
ThreadStart job = new ThreadStart(ThreadJob);
Thread thread = new Thread(job);
thread.Start();
for (int i=0; i < 5; i++)
{
Console.WriteLine ("Main thread: {0}", i);
Thread.Sleep(1000);
}
}
static void ThreadJob()
{
DataTable dt = SmoApplication.EnumAvailab leSqlServe rs(false);
ListServers.DisplayMember = "name";
ListServers.ValueMember = "name";
ListServers.DataSource = dt.DefaultView;
}
}
using System;
using System.Threading;
public class Test
{
static void Main()
{
ThreadStart job = new ThreadStart(ThreadJob);
Thread thread = new Thread(job);
thread.Start();
for (int i=0; i < 5; i++)
{
Console.WriteLine ("Main thread: {0}", i);
Thread.Sleep(1000);
}
}
static void ThreadJob()
{
DataTable dt = SmoApplication.EnumAvailab
ListServers.DisplayMember = "name";
ListServers.ValueMember = "name";
ListServers.DataSource = dt.DefaultView;
}
}
ASKER
@gauthampj
It compiles and runs but the combo box never gets populated
It compiles and runs but the combo box never gets populated
System.Threading.Thread.Start
(
new ThreadStart
(delegate
{
DataTable dt = SmoApplication.EnumAvailableSqlServers(false);
ListServers.Invoke(new ThreadStart(delegate
{
ListServers.DisplayMember = "name";
ListServers.ValueMember = "name";
ListServers.DataSource = dt.DefaultView;
}),null);
}
));
ASKER
I get the following error:
An object reference is required for the non-static field, method, or property 'System.Threading.Thread.S tart(objec t)'
An object reference is required for the non-static field, method, or property 'System.Threading.Thread.S
public partial class FormSQLServerList : Form
{
public FormSQLServerList()
{
InitializeComponent();
}
private void FormSQLServerList_Load(object sender, EventArgs e)
{
System.Threading.Thread.Start
(
new ThreadStart
(delegate
{
DataTable dt = SmoApplication.EnumAvailableSqlServers(false);
ListAvailableSQLServers.Invoke(new ThreadStart(delegate
{
ListAvailableSQLServers.DisplayMember = "name";
ListAvailableSQLServers.ValueMember = "name";
ListAvailableSQLServers.DataSource = dt.DefaultView;
}), null);
}
));
}
}
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
Excellent! Thanks for all the help!
http://www.yoda.arachsys.com/csharp/threads/