我有一種情況,當用戶點擊一個tabitem時,用戶創建一個類的實例。這個類包含一個繪製圖形的函數,它非常耗時,因此它被寫入異步。如何等待第一個代碼正在執行?
現在問題是讓用戶第一次點擊選項卡並且類實例化,並且長時間處理工作很長時間,同時前一個異步任務沒有被縮短並且用戶再次點擊同一個tabitem。
在這種情況下,我必須等到上一個異步任務沒有完成,然後第二次點擊到tabitem之後,必須先創建實例後才能完成異步任務(應該等到第一個異步進程沒有被縮短)。
的代碼是在這裏:
if (selectedTabIndex == 2) //What is the user selected second time whil the previous task is still not finshed ?
{
DrawGraph obj= new DrawGraph(selectedItem.Name);
}
某處DrawGraph類的構造函數我這樣做:
public DrawGraph(string Name)
{
timeConsumingProcess(Name);
}
public async void timeConsumingProcess(string Name)
{
await startTaimeConsumingProcess();
}
什麼,我想,當用戶點擊第二次此選項卡項目數= 2那麼必須等到先前的異步任務爲finsh,然後它必須再次實例化DrawGraph類到 再次重新啓動異步。
如何實現它?
爲什麼不禁用該選項卡? –
@HristoYankov是的,我有這個想法,但沒有被我的大四接受。 –