我有一個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