gpt4 book ai didi

c# - 使用长时间运行的方法在 ASP.NET Web 窗体中阻止网页

转载 作者:太空宇宙 更新时间:2023-11-03 17:01:30 24 4
gpt4 key购买 nike

我想在我的 GridView 中显示数据库结果,但调用长时间运行的方法时网页速度极慢。

在 GridView 中,我有一个带有以下项目模板的模板字段:

<ItemTemplate>  
<asp:Label ID="lblNumResults" runat="server" Text='<%# GetNumCrawlResults(Convert.ToInt32(Eval("id"))) %>'></asp:Label>
</ItemTemplate>

这是对应的方法:

public string GetNumCrawlResults(int jobId)
{
var task = Task.Run(() => Utilities.GetNumCrawlResults(jobId));
//this is slow and blocks the GUI
return Convert.ToString(task.Result);
}

这是数据库查询:

public static async Task<int> GetNumCrawlResults(int jobId)
{
DocumentCollection collection = await GetOrCreateCollectionAsync(database.SelfLink, Convert.ToString(jobId));

var result = (from c in documentDb.CreateDocumentQuery<Shared.CrawlResult>(collection.SelfLink)
select c).AsEnumerable();
return result.Count();
}

有什么方法可以在异步方法完成后分配标签文本吗?

谢谢

最佳答案

您的页面是否呈现结果?我的印象是缺少 task.wait() 语句。

无论如何,在你的情况下我会使用 Ajax 和 Knockout(或类似的)。

关于c# - 使用长时间运行的方法在 ASP.NET Web 窗体中阻止网页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29549605/

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