创建对象异步

时间:2015-05-06 17:42:32

标签: c# wpf asynchronous

我有一个XAML应用程序,我正在做一些我想异步做的事情,以使一切更好。 起初我正在创建一个连接到web服务的类的实例。在应用程序启动后首先执行此操作并显示“连接到webservice ...”等信息会很高兴 在实例化类之后,我从WebService获取大量数据,然后绑定并显示在DataGrid中。这是我想在显示ProgressBar时异步运行的第二个任务 我理解async和await的基础但我不知道如何在应用程序窗口可见之后在异步方法中声明对象,我可以进一步使用它来获取数据。任何帮助非常感谢!

以下是一些演示代码,展示了我的项目目前的外观。

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
    }
}

1 个答案:

答案 0 :(得分:1)

你不能在构造函数中TypeError: Boolean value of this clause is not defined异步代码,但你可以在一个事件中。 await,例如:

Loaded