如何在xamarin表单

时间:2016-09-23 13:39:37

标签: android-asynctask xamarin.forms

我在我的代码中调用了异步函数,它调用了rest服务并填充了一个数据结构。但不知怎的,我需要在完成之前取消该功能,我该如何实现这一目标。

getAdDetails(ad.id,ad.campaign_type);

private async void getAdDetails(int campaign_id, string campaign_type)  {   
// some code here
}

2 个答案:

答案 0 :(得分:0)

有一种叫做“CancelationToken”的东西应该用于这种东西。 另一种方法是在想要取消进程时抛出异常。 另一种方法是使用一个可以命名为“ShouldExecute”的标志,并在方法中继续监视它。

我也倾向于忽略不需要时从方法中得到的结果,让线程在和平中执行,但在它返回时却被忽略。

答案 1 :(得分:0)

假设你的函数中有一些背景逻辑:

 CancellationTokenSource _cancellation;


    public void SomeFunctionToStartDataRefresh(){
       _cancellation = new CancellationTokenSource();

    try{
       getAdDetails(id, type, cancellation.Token);
    }catch(OperationCanceledException ex){
      //Operation is cancelled
    }
    }


    private async Task getAdDetails(ad.id,ad.campaign_type);

       private async void getAdDetails(int campaign_id, string campaign_type, CancellationToken token)  {   

       var data = await fetchDatafromServer()
       token.ThrowIfCancellationRequested();
       await DosomethingWithData();
       token.ThrowIfCancellationRequested();
       await DoSomethingElseWithData();
    }