C#等待委托完成后再继续

时间:2014-07-16 15:21:57

标签: c# multithreading asynchronous datagridview delegates

我需要从创建它的线程以外的线程访问DataGridView控件。我读过我必须使用委托,它可以工作,但我需要等待该委托完成后继续在线程中。我试图在EndInvoke之后调用BeginInvoke,但线程仍在继续。

public void ArrangeGrid()
{
    ArrangeGridHandler ag = ArrangeGridAsync;
    IAsyncResult result = ag.BeginInvoke(cb, null);
    ag.EndInvoke(result);
}

当我调用ArrangeGrid()时,线程会继续,即使它没有完成。我能怎么做? 谢谢!

1 个答案:

答案 0 :(得分:2)

使用Async方法时,将为您创建一个新线程。

尝试使用Invoke

 public void ArrangeGrid()
    {          
         if(this.InvokeRequired) 
          { 
             Action  arrange = ArrangeGrid ;  
               this.Invoke(arrange); 
          }
          else
          {  
            //insert your code here  
          }
    }