gpt4 book ai didi

c# - 在循环中对方法的多个异步方法调用

转载 作者:太空宇宙 更新时间:2023-11-03 14:31:37 25 4
gpt4 key购买 nike

我花了一整天的时间尝试使用“AddOnPreRenderCompleteAsync”和“RegisterAsyncTask”的各种方法,但到目前为止没有成功。

我成功地使用“BeginExecuteReader”和“EndExecuteReader”对数据库进行了异步调用,但这没有捕获要点。异步处理不应该是对 DB 的调用,在我的例子中它是快速的,它应该是在之后,在“while”循环期间,同时调用外部 Web 服务。

我认为简化的伪代码将最好地解释:
(注意:连接字符串使用的是“MultipleActiveResultSets”)

private void MyFunction()
{
"Select ID, UserName from MyTable"
// Open connection to DB
ExecuteReader();
if (DR.HasRows)
{
while (DR.Read())
{
// Call external web-service
// and get current Temperature of each UserName - DR["UserName"].ToString()
// Update my local DB
Update MyTable set Temperature = ValueFromWebService where UserName =
DR["UserName"];

CmdUpdate.ExecuteNonQuery();
}

// Close connection etc
}
}

访问数据库很快。从外部网络服务获取返回结果很慢,至少应该异步处理。

如果每次调用 Web 服务只需要 1 秒,假设我只有 100 个用户,则数据库更新至少需要 100 秒才能完成,这显然不是一个选项。
最终应该有成千上万的用户(目前只有 2 个)。

目前一切正常,只是非常同步:)
对自己的想法:
也许我处理这个问题的方式是错误的?
也许整个过程应该异步调用?

非常感谢

最佳答案

您是否考虑过将这整件事放到它自己的线程中?

关于c# - 在循环中对方法的多个异步方法调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2433101/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com