【问题标题】:Issues running a method asynchronously, and returning an object异步运行方法并返回对象的问题
【发布时间】:2020-11-21 15:23:36
【问题描述】:

在我的代码中,我从一个类中的 json 文件中读取数据,并需要它来返回我创建的对象。

我命名为 StockData 的对象(它是一个带有代码、名称、价格等的股票。)

在第 2 页中,我将第 1 页中的一个方法调用为“getStockData()”。

该方法类似于:

public async Task<StockData> getStockData()
        {
            string apiString = await apiConnection.DownloadStringTaskAsync(API);

            // ... important code is run ...
            // ... newStock is created as a  new StockData() type ...

            // returning newStock, which returns as a Task<StockData>
            return newStock;
        }

不幸的是,由于显而易见的原因,我不能只返回 StockData,因为异步方法不能那样工作。

但是,在调用该方法的第二页上,我需要找出某种方法将其从任务中转换出来......

这是我在另一边的一个例子:

StockData newStock = dm.getStockData();

现在我明白了为什么它不起作用。所以我不需要解释为什么我的代码不起作用。我只是没有让它工作的解决方案。

有人知道我怎样才能让它工作吗?我可以对我的代码进行任何变通或调整同时仍允许该方法异步运行?

非常感谢! :)

【问题讨论】:

    标签: c# xamarin async-await android-asynctask


    【解决方案1】:

    使用 await 关键字?

    StockData newStock = await dm.getStockData();
    

    操作将异步执行,返回值为StockData类型。

    【讨论】:

    • 完美!那行得通...在我阅读您的评论之前,我正在尝试:.Result 但这只是让我的应用程序一直冻结...非常感谢!
    • @AlzarTech:一种思考方式是async将您的值“包装”在Task&lt;T&gt;中,await“展开”来自Task&lt;T&gt;的值。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-31
    • 2016-12-02
    • 2015-04-15
    • 1970-01-01
    • 2017-02-06
    • 2016-07-10
    相关资源
    最近更新 更多