加载循环延迟C#

加载循环延迟C#,c#,visual-studio-2010,visual-c#-express-2010,C#,Visual Studio 2010,Visual C# Express 2010,我有一个将数据加载到数据网格的应用程序。但是,加载过程需要几秒钟的时间。我想在加载数据时显示一个加载循环,但在数据加载完成之前,该循环不会显示。代码是: public void processbutton(object sender, EventArgs e) { pictureBox1.Visible = true; Image image=Image.FromFile("C:\\Users\\me\\Documents\\Curr\\Projects\\P

我有一个将数据加载到数据网格的应用程序。但是,加载过程需要几秒钟的时间。我想在加载数据时显示一个加载循环,但在数据加载完成之前,该循环不会显示。代码是:

public void processbutton(object sender, EventArgs e)
        {
     pictureBox1.Visible = true;
     Image image=Image.FromFile("C:\\Users\\me\\Documents\\Curr\\Projects\\Proj\\Proj\\load.gif");
     pictureBox1.Image = image;

//--------------------------------------------------------------------------
     string ssqlconnectionstring = "string";
     SqlConnection sqlconn = new SqlConnection(ssqlconnectionstring);

     string comm = "SELECT * from Table";
     sqlconn.Open();

//---------------------REST OF CODE-------------------------

您必须从一个单独的线程执行所有长时间运行的任务,否则会阻塞UI线程

查找
BackgroundWorker

干杯

编辑:

或者您可以使用Task类,如下所示:

public async void processbutton(object sender, EventArgs e)
{
    pictureBox1.Visible = true;
    Image image=Image.FromFile("C:\\Users\\me\\Documents\\Curr\\Projects\\Proj\\Proj\\load.gif");
    pictureBox1.Image = image;

    //--------------------------------------------------------------------------
    await Task.Run(() =>
    {
        string ssqlconnectionstring = "string";
        SqlConnection sqlconn = new SqlConnection(ssqlconnectionstring);

        string comm = "SELECT * from Table";
        sqlconn.Open();
        //---------------------REST OF CODE-------------------------            
    });

那么,如果当前线程正在等待查询响应,您认为表单将如何重新绘制:)?也许您需要手动请求表单重新绘制或异步执行查询。。。