我有一个XAML应用程序,我正在做一些耗时的事情,我想异步地做一切,使一切更好。 起初我创建了一个连接到web服务的类的实例。在应用程序启动后首先执行此操作并显示“连接到webservice ...”等信息将会很好。
该类已实例化后,我从WebService获取大量数据,然后它正在绑定并显示在DataGrid
。这是我想要在显示ProgressBar
时异步运行的第二项任务。
我了解了异步和等待的基础知识,但我不知道如何在应用程序窗口可见后,我可以进一步使用它来获取数据后,在异步方法中声明该对象。任何帮助非常感谢!创建对象异步
这里是一些演示代码,显示了我的项目目前的样子。
public class ClassA
{
public void Connect
{
//Connect to WebService
}
public List GetObjectIds
{
//get object IDs
}
public objType GetObjectById
{
//get complete Object
}
}
public class MainWindow
{
public MainWindow()
{
InitializeComponent()
ClassA hello = new ClassA();
//This takes about 15 seconds. Shall be async
hello.Connect();
//List will be used as Source for DataGrid
List<object> DataGridViewSource List<object>();
//use the instance of hello to get some Data from the WebService.
List<int> objectIds = new List<int>();
objectIds = hello.GetObjectIds("LDAPQuery");
foreach (int id in objectIds)
{
//this takes about 10 minutes. Shall be async
var tmpObj = hello.GetObjectById(id);
DataGridViewSource.Add(tmpObj);
}
//do binding to DataGrid
}
}
我正确理解for循环应该异步运行吗? – Domysee
请比_更具体,“但我没有任何运气实现这个”_。请确实提供[一个很好的,_minimal_,_complete_代码示例](http://stackoverflow.com/help/mcve),它可靠而清晰地说明了迄今为止尝试过的内容以及该尝试的作用,并提供了清晰详细的解释为什么以及如何与您希望代码执行的内容不同。 –
你说得对。我编辑了我的问题。我的主要问题是在应用程序窗口可见后,如何以及在何处异步声明对象。 – sevi