Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/266.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用Task.ContinueWith时,并非所有代码路径都返回值_C#_.net_Windows Runtime_Windows Phone 8.1_Task - Fatal编程技术网

C# 使用Task.ContinueWith时,并非所有代码路径都返回值

C# 使用Task.ContinueWith时,并非所有代码路径都返回值,c#,.net,windows-runtime,windows-phone-8.1,task,C#,.net,Windows Runtime,Windows Phone 8.1,Task,因此,我有一个函数,其中在allif else中有一个返回值,但仍然得到编译错误: 并非所有代码路径都返回值 public异步任务DeletePost(字符串更新\u id,字符串身份验证) { if(实用程序.NetworkStatus.HasInternetAccess) { 等待api.DeletePost.DeletePostAPI(更新id,authId).ContinueWith((t)=> { if(t.Status==TaskStatus.RanToCompletion) { 如

因此,我有一个函数,其中在all
if else
中有一个返回值,但仍然得到编译错误:

并非所有代码路径都返回值

public异步任务DeletePost(字符串更新\u id,字符串身份验证)
{
if(实用程序.NetworkStatus.HasInternetAccess)
{
等待api.DeletePost.DeletePostAPI(更新id,authId).ContinueWith((t)=>
{
if(t.Status==TaskStatus.RanToCompletion)
{
如果(t.Result!=null)
{
返回t.Result.status==200;
}
其他的
{
返回false;
//结果为空,API失败
//未实施
}
}
其他的
{
返回false;
//任务失败
//未实施
}
});
}
其他的
{
返回false;
//无网络
//未实施
}
}

谁能告诉我我做错了什么吗?

您需要返回wait的返回值。因此:

bool result = await APIs.DeletePost.DeletePostAPI(update_id, authId).ContinueWith((t) =>
                {
                    if (t.Status == TaskStatus.RanToCompletion)
                    {
                        if (t.Result != null)
                        {
                            return t.Result.status == 200;
                        }
                        else
                        {
                            return false;
                            //empty result, API failed
                            //not implemented
                        }
                    }
                    else
                    {
                        return false;
                        //task failed 
                        //not implemented
                    }
                });
return result;

对。您不会返回继续执行
deletepastapi
的结果:

public async Task<bool> DeletePost(string update_id, string authId)
{
    if (Utility.NetworkStatus.HasInternetAccess)
    {
        return await APIs.DeletePost.DeletePostAPI(update_id, authId).ContinueWith((t) =>
        {
            if (t.Status == TaskStatus.RanToCompletion)
            {
                if (t.Result != null)
                {
                    return t.Result.status == 200;
                }
                else
                {
                    return false;
                    //empty result, API failed
                    //not implemented
                }
            }
            else
            {
                return false;
                //task failed 
                //not implemented
            }
        });
    }
    else
    {
        return false;
        //no network
        //not implemented
    }
}
public异步任务DeletePost(字符串更新\u id,字符串身份验证)
{
if(实用程序.NetworkStatus.HasInternetAccess)
{
return wait api.DeletePost.DeletePostAPI(update\u id,authId).ContinueWith((t)=>
{
if(t.Status==TaskStatus.RanToCompletion)
{
如果(t.Result!=null)
{
返回t.Result.status==200;
}
其他的
{
返回false;
//结果为空,API失败
//未实施
}
}
其他的
{
返回false;
//任务失败
//未实施
}
});
}
其他的
{
返回false;
//无网络
//未实施
}
}

如果您完全删除
并继续执行
,只需使用更现代的
wait
,您的代码就会简单得多:

public async Task<bool> DeletePost(string update_id, string authId)
{
  if (Utility.NetworkStatus.HasInternetAccess)
  {
    try
    {
      var result = await APIs.DeletePost.DeletePostAPI(update_id, authId);
      if (result != null)
      {
        return result.status == 200;
      }
      else
      {
        return false;
        //empty result, API failed
        //not implemented
      }
    }
    catch
    {
      return false;
      //task failed 
      //not implemented
    }
  }
  else
  {
    return false;
    //no network
    //not implemented
  }
}
public异步任务DeletePost(字符串更新\u id,字符串身份验证)
{
if(实用程序.NetworkStatus.HasInternetAccess)
{
尝试
{
var result=await api.DeletePost.DeletePostAPI(更新id,authId);
如果(结果!=null)
{
返回result.status==200;
}
其他的
{
返回false;
//结果为空,API失败
//未实施
}
}
抓住
{
返回false;
//任务失败
//未实施
}
}
其他的
{
返回false;
//无网络
//未实施
}
}

return wait api.DeletePost.DeletePostAPI
return false
在方法末尾,那么这个新的返回何时执行?考虑到我的工作流程function@Rishabh876在
DeletePostAPI
完成后,它的延续完成,您从延续中返回的值将从
DeletePost
返回,哦,该死,现在我得到了它。我真是太傻了。谢谢
public async Task<bool> DeletePost(string update_id, string authId)
{
  if (Utility.NetworkStatus.HasInternetAccess)
  {
    try
    {
      var result = await APIs.DeletePost.DeletePostAPI(update_id, authId);
      if (result != null)
      {
        return result.status == 200;
      }
      else
      {
        return false;
        //empty result, API failed
        //not implemented
      }
    }
    catch
    {
      return false;
      //task failed 
      //not implemented
    }
  }
  else
  {
    return false;
    //no network
    //not implemented
  }
}