C# Xamarin PostAsync到API被多次调用,我只想调用一次

C# Xamarin PostAsync到API被多次调用,我只想调用一次,c#,.net,xamarin,asynchronous,C#,.net,Xamarin,Asynchronous,在我的xamarin应用程序中,我有属性和费用,它们都是在创建时与API进行PostAsync的。虽然Properties PostAsync只被调用一次,但是Expenses PostAsync被调用了多次,我只希望它被调用一次 以下是费用的PostAsync方法: 公共异步任务AddItemAsync(费用项目) { StringContent=新的StringContent(JsonConvert.SerializeObject(项),Encoding.UTF8,“a

在我的xamarin应用程序中,我有属性和费用,它们都是在创建时与API进行PostAsync的。虽然Properties PostAsync只被调用一次,但是Expenses PostAsync被调用了多次,我只希望它被调用一次

以下是费用的PostAsync方法:

公共异步任务AddItemAsync(费用项目)
{           
StringContent=新的StringContent(JsonConvert.SerializeObject(项),Encoding.UTF8,“application/json”);
HttpResponseMessage响应=等待客户端。PostAsync(“https://10.0.2.2:5001/api/expenses,内容)。配置等待(false);
字符串responseContent=response.Content.ReadAsStringAsync().Result;
item=JsonConvert.DeserializeObject(responseContent);
项目。添加(项目);
退货项目;
}
PostAsync的属性完全相同,只是更改了 以财产而不是费用为理由。 它们也是分开的,因为将来我可能会为它们做一些区别


首先,请学习正确使用async/Wait。第二,如果这被多次调用,那么您需要查看调用代码。感谢您的回复@Jason,但是您是否有任何关于在这种情况下正确使用async/await的建议,我可能错过了?调用代码从一个带有保存按钮的视图开始,单击该按钮可使用MessagingCenter转到Essensesviewmodel,并从那里调用DataStore.PostAsync并等待。这就像在属性中一样,但属性不会产生重复项,只会产生费用。我相信这是因为属性具有唯一的属性。
最好等待异步方法中的每个调用。像这样使用
string responseContent=await response.Content.ReadAsStringAsync()
首先从哪里调用此api?其次,我同意@NithinChandran和@Mina Fawzy,我使用上面提到的方法从这个Xamarin应用程序调用api,而在调试中,我看到这个方法在使用多线程时会重复多次。我不明白为什么有时使用多线程,而有时不使用??当多线程发生时,调用API的次数为线程通过抛出的次数:HttpResponseMessage response=await client.PostAsync(“,content”).ConfigureAwait(false);
public async Task<Expense> AddItemAsync(Expense item)
    {           
        StringContent content = new StringContent(JsonConvert.SerializeObject(item), Encoding.UTF8, "application/json");

        HttpResponseMessage response = await client.PostAsync("https://10.0.2.2:5001/api/expenses", content).ConfigureAwait(false);

        string responseContent = response.Content.ReadAsStringAsync().Result;

        item = JsonConvert.DeserializeObject<Expense>(responseContent);

        items.Add(item);

        return item;
    }