[英]Wait for WinForms async method to return before closing
我有一個WinForms應用程序,該應用程序從表中查找一些數據,並通過HTTP將所述數據發送到外部API。 在應用程序中,我顯示一個數據網格,其中列出了包含通過API發送的數據的行。
我想讓應用程序通過HTTP API發送完數據后退出自身。 在程序關閉之前,如何等待異步方法GetEventData
完成執行?
public Main()
{
InitializeComponent();
GetEventData();
// Exit the app
Environment.Exit(-1);
}
調用API的方法如下(整個方法未顯示,只是await
部分)
private async void GetEventData()
{
\\ Get data from database code before here
ClientDataObject client = new ClientDataObject();
apiResult = await client.SendDataVia API();
// Update the grid with list of rows that were sent to API
UpdateGridView();
}
當前,該應用程序啟動,然后立即存在。 我相信這是因為GetEventData
方法不會阻止其余代碼。 我正在使用async
並await
因此在等待API調用完成時,GUI保持響應(能夠顯示數據庫中的數據狀態)
async
方法不應void
。 僅當該方法是事件的處理程序時,才應具有async void
方法。 它應該返回一個Task
。 然后,您可以響應該任務完成而退出應用程序:
private async Task GetEventData()
{
//...
}
public Main()
{
InitializeComponent();
GetEventData()
.ContinueWith(t => Environment.Exit(-1));
}
您可以使用Task
的.Wait()
方法等待它完成。
public Main()
{
InitializeComponent();
GetEventData().Wait();
// Exit the app
Environment.Exit(-1);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.