【发布时间】:2021-02-13 08:31:40
【问题描述】:
所以我有一个 android 应用程序,它使用以下结构向 api 发出多个请求。请注意,这在 iOS 中有效,并且似乎在更新 xamarin 表单后开始发生。
public async Task<Rootobject> GetData()
{
using (var httpClient = new HttpClient())
{
var response = await httpClient.GetAsync(url); //throws exception here. See screenshot
}
}
这对我的所有请求都很好,除了一个请求,唯一的区别是这个请求是从任务工厂中调用的,如下所示:
tasks.Add(Task.Factory.StartNew(async()=>
{
var data = await GetData();
}));
并调用如下:
Task.WhenAll(tasks).ContinueWith(t =>
{
IsBusy = false;
}).GetAwaiter();
真正让我感到困惑的是,这在 iOS 中按预期工作。有谁知道我能做些什么来克服这个问题?
【问题讨论】:
-
你的意思是它会抛出一个 NullReference 异常吗?具体哪条线路?什么是堆栈跟踪?您发布的代码是否完整?因为您没有显示任何返回值,所以您只是将结果分配给局部变量并将它们丢弃。
-
是更新的帖子以显示错误及其发生的行。我没有选择不使用 Xamarin。我试图只发布问题所在,并且没有不相关的代码。
-
请提供一个 MCVE(最小的、完整的、可验证的示例,因为我无法使用提供的代码重现此问题。请参阅:stackoverflow.com/help/mcve 您的代码有问题,因为您没有返回任何内容来自您的 Task
方法,因此甚至无法编译。还需要知道当“任务”变量中只有一个任务时是否会出现问题,或者是否仅在“任务”中出现多个任务时会出现问题。还有任务。除非您需要对任务创建选项等进行更细粒度的控制,否则建议使用 Run 而不是 Task.Factory.StartNew。 -
我无法生成 mvce。原来我是在疯狂追逐,问题最终是github.com/alexrainman/CarouselView/issues/557
标签: android xamarin async-await task