?
Solved

Retreiving a list of available SQL Servers in a new thread.

Posted on 2009-04-09
8
Medium Priority
?
343 Views
Last Modified: 2013-12-17
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!
DataTable dt = SmoApplication.EnumAvailableSqlServers(false);
ListServers.DisplayMember = "name";
ListServers.ValueMember = "name";
ListServers.DataSource = dt.DefaultView;

Open in new window

0
Comment
Question by:andy_ee
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 3
  • 3
  • 2
8 Comments
 
LVL 7

Expert Comment

by:AUmidh
ID: 24107185
Here is a sample of threading
http://www.yoda.arachsys.com/csharp/threads/
0
 
LVL 29

Expert Comment

by:Gautham Janardhan
ID: 24107186

System.Threading.Thread.Start
(
new ThreadStart
(delegate
{
DataTable dt = SmoApplication.EnumAvailableSqlServers(false);
ListServers.DisplayMember = "name";
ListServers.ValueMember = "name";
ListServers.DataSource = dt.DefaultView;
 
}
));

Open in new window

0
 
LVL 7

Expert Comment

by:AUmidh
ID: 24107221
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.EnumAvailableSqlServers(false);
ListServers.DisplayMember = "name";
ListServers.ValueMember = "name";
ListServers.DataSource = dt.DefaultView;
    }
}

0
VIDEO: THE CONCERTO CLOUD FOR HEALTHCARE

Modern healthcare requires a modern cloud. View this brief video to understand how the Concerto Cloud for Healthcare can help your organization.

 

Author Comment

by:andy_ee
ID: 24113170
@gauthampj

It compiles and runs but the combo box never gets populated
0
 
LVL 29

Expert Comment

by:Gautham Janardhan
ID: 24113419

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);
}
));

Open in new window

0
 

Author Comment

by:andy_ee
ID: 24115963
I get the following error:

An object reference is required for the non-static field, method, or property 'System.Threading.Thread.Start(object)'
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);
        }
        ));
    }
}

Open in new window

0
 
LVL 29

Accepted Solution

by:
Gautham Janardhan earned 2000 total points
ID: 24117035

public partial class FormSQLServerList : Form
{
    public FormSQLServerList()
    {
        InitializeComponent();
    }
    private void FormSQLServerList_Load(object sender, EventArgs e)
    {
        System.Threading.Thread t = new
        System.Threading.Thread
        (
        new ThreadStart
        (delegate
        {
            DataTable dt = SmoApplication.EnumAvailableSqlServers(false);
            ListAvailableSQLServers.Invoke(new ThreadStart(delegate
            {
                ListAvailableSQLServers.DisplayMember = "name";
                ListAvailableSQLServers.ValueMember = "name";
                ListAvailableSQLServers.DataSource = dt.DefaultView;
            }), null);
        }
        ));
        t.Start();
    }
}

Open in new window

0
 

Author Closing Comment

by:andy_ee
ID: 31568524
Excellent!  Thanks for all the help!
0

Featured Post

Free Tool: ZipGrep

ZipGrep is a utility that can list and search zip (.war, .ear, .jar, etc) archives for text patterns, without the need to extract the archive's contents.

One of a set of tools we're offering as a way to say thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Why is this different from all of the other step by step guides?  Because I make a living as a DBA and not as a writer and I lived through this experience. Defining the name: When I talk to people they say different names on this subject stuff l…
A Stored Procedure in Microsoft SQL Server is a powerful feature that it can be used to execute the Data Manipulation Language (DML) or Data Definition Language (DDL). Depending on business requirements, a single Stored Procedure can return differe…
Using examples as well as descriptions, and references to Books Online, show the documentation available for date manipulation functions and by using a select few of these functions, show how date based data can be manipulated with these functions.
Viewers will learn how the fundamental information of how to create a table.
Suggested Courses

770 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question