我正在尝试gridview
在单独的线程中绑定a 。
几乎每个示例await Task.Delay(10000);
都在描述长时间运行的任务时使用,但实际上我想在这里做一些工作。
我如何绑定到网格异步(或任何常规工作)?
private async void BindGrid_Click(object sender, EventArgs e)
{
string result = await BindFileGridTemp();
RadMessageBox.Show(result);
}
public async Task<string> BindFileGridTemp() // Bind Grid
{
// Bind Grid here.........
//this.radGridViewFiles.DataSource = null;
//this.radGridViewFiles.DataSource = MyGlobals.ListOfItemsToControl.ToList()
await Task.Delay(10000); // I dont want this but its on every example for async and await
return "I am finished";
}
我试图在单独的线程中绑定gridview。
正如其他人指出的那样,您实际上无法在另一个线程中进行绑定。它必须是UI线程。
几乎每个示例都使用await Task.Delay(10000); 当他们描述一个长期运行的任务时,但是我实际上想在这里做一些工作。
await Task.Delay
是的异步等效项Thread.Sleep
。它只是意味着“将您必须执行的所有异步工作都放在这里”。
我如何绑定到网格异步(或任何常规工作)?
可以这样简单:
public async Task<string> BindFileGridAsync()
{
this.radGridViewFiles.DataSource = await GetMyDatasourceAsync();
return "I am finished";
}
请注意,这与MVVM模式不符。要遵循MVVM模式,请实施Peter Ritchie的建议:将RadGridView.DataSource
XAML属性数据绑定到ViewModel属性,在创建ViewModel时启动异步操作,并使用结果值更新该属性。如果您正在执行异步数据绑定,那么我的博客文章可能会有所帮助。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句