Что сказал Рид, но мне нравится этот синтаксис немного лучше:
Что происходит, когда вы создаете функцию делегата, которая будет передаваться в качестве параметра в поток пользовательского интерфейса через Control.Invoke
, который ее вызывает, таким образом, поток пользовательского интерфейса вносит изменения в importFileGridView
.
importFileGridView.Invoke((MethodInvoker) delegate {
importFileGridView.DataSource = temp.Tables[0];
});
Вы также можете написать это так:
//create a delegate with the function signature
public delegate void SetDateSourceForGridViewDelegate (GridView gridView, Object dataSource);
//write a function that will change the ui
public void SetDataSourceForGridView(GridView gridView, Object dataSource)
{
gridView.DataSource = dataSource;
}
//Create a variable that will hold the function
SetDateSourceForGridViewDelegate delegateToInvoke = SetDataSourceForGridView;
//tell the ui to invoke the method stored in the value with the given paramters.
importFileGridView.Invoke(delegateToInvoke, importFileGridView, temp.Tables[0]);
и я бы посоветовал использовать MethodInvoker
сверх Action
см .: здесь