You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Xamarin/C# SQLite执行SUM查询返回System.Threading.Task问题求助

错误原因

你调用的getLeaveDaysSum()方法返回类型是Task<int>,这是.NET异步编程中代表异步操作的对象,而非你需要的求和结果。你没有等待异步操作执行完成就直接调用ToString(),输出的自然是Task类型的名称,而非实际的查询结果。

修复方案

推荐方案:使用await等待异步执行完成

将OnAppearing方法修改为异步方法即可,生命周期方法使用async void属于.NET中的合法用法:

protected override async void OnAppearing()
{
    base.OnAppearing();
    // 等待异步查询执行完成,拿到实际的int类型求和结果
    int leaveDaysSum = await App.Database.getLeaveDaysSum();
    LeaveTakenDays.Text = leaveDaysSum.ToString();
}

不推荐方案:同步等待结果

如果特殊场景不能修改为异步方法,可以用以下方式同步获取结果,但该方法有概率引发UI线程死锁,非必要不建议使用:

protected override void OnAppearing()
{
    base.OnAppearing();
    int leaveDaysSum = App.Database.getLeaveDaysSum().GetAwaiter().GetResult();
    LeaveTakenDays.Text = leaveDaysSum.ToString();
}

内容的提问来源于stack exchange,提问作者aTubOfAdam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 06:15:03