gpt4 book ai didi

Web 应用程序中的 C# 线程问题

转载 作者:太空狗 更新时间:2023-10-29 23:18:33 25 4
gpt4 key购买 nike

我有一个 Web 应用程序,在代码隐藏页面中,我有一个按钮单击事件。

protected void btnUpload_Click(object sender, EventArgs e)
{
TimerEvent TE = new TimerEvent();
TE.TimerEvents();
Server.Transfer("~/Jobs.aspx");
}

我有一个方法调用 TimerEvents(),可能需要 10-15 秒才能将控制权返回给服务器传输。所以我希望服务器传输线在方法调用的同时同时执行。

我在这里尝试线程化:

    TimerEvent TE = new TimerEvent();
Thread t = new Thread(TE.TimerEvents);
t.IsBackground = true;
t.Start();
Server.Transfer("~/Jobs.aspx");

但是在方法完成之前不会进行传输。我怎样才能做到这一点?

最佳答案

这个设计并不理想。即使您做对了,由于多线程代码和 Server.Transfer() 调用的混合,您也有可能在以后遇到问题。

在 ASP.NET 应用程序中也存在关于多线程的问题。

我建议您重新设计您的应用程序,以便您拥有某种队列来对长时间运行的任务进行排队。然后,您可以拥有一个服务,一个一个地处理队列中的任务。

从您的网络应用程序,您现在可以:

  1. 将长时间运行的 TimerEvents 任务排队到外部服务。

  2. 调用 Server.Transfer()

  3. 在新页面(“~/Jobs.aspx”)上,调用外部服务以在需要时获取结果。

关于Web 应用程序中的 C# 线程问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4778035/

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