从构造函数调用的异步方法
我有一个问题,我在构造函数中调用async方法,如何解决或有一个很好的解决方案,这里是一个例子
public Constructor() { Value = PopulateValueFromDB(); //async method CalculateInDB(); // async method } public async Task PopulateValueFromDB() { ... do some async calls return await ... } public async Task CalculateInDB() { ... return await ... }
基本上在构造函数中我有一个错误,因为我不能使用等待那里,我不能使它异步。
对于CalculateInDB我可以使它返回无效,然后我解决它的问题,虽然我读到某处返回void不是很好的解决方案。
关于PopulateVlaue方法……我必须返回一些东西……
那么是否有一个解决方案,我不应该使用那些方法然后使它们同步而不是异步?
我有关于async
构造函数的博客文章,涵盖了各种方法。 如果可能,我建议你使用工厂模式,如下:
private Constructor() { } private InitializeAsync() { Value = await PopulateValueFromDBAsync(); await CalculateInDBAsync(); } public static async Task Create() { var ret = new Constructor(); await ret.InitializeAsync(); return ret; }
这是使用旧技术的时候了!
ThreadPool.QueueUserWorkItem。
干杯 –
上述就是C#学习教程:从构造函数调用的异步方法分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/987359.html