【问题标题】:How can I modify a label with a secondary thread?如何使用辅助线程修改标签?
【发布时间】:2015-06-12 04:56:03
【问题描述】:

我有一个 ASP.NET 页面,它进行 Web 服务调用并获得带有数据的响应,主要是进行测试调用以监视服务是启动还是关闭。由于有很多调用,我决定在它们自己的线程上运行它们,并在它们完成并返回后使用响应值更新网页上的 UI。

我之前在 Windows 窗体应用程序中使用 this.Invoke 方法来执行此操作,以使主线程然后更新标签文本,但通过我的搜索,我没有在 ASP 中找到类似的方法来执行此操作。我看到服务返回响应,并且更新标签文本的代码在每个辅助线程上运行,但标签文本没有任何变化。

是否有任何其他方法可以更改在主线程上创建的标签文本,使用类似于 Invoke 的辅助线程?

【问题讨论】:

  • (之前的一位评论者指出,原始请求将长时间完成,线程将重新分配到其他地方)。您可以查看 SignalR - 您的后台线程应该能够通过集线器发出通知,该通知可以通知客户端。它可能需要一些重大的设计更改/改造。

标签: c# asp.net multithreading


【解决方案1】:

听起来您正在寻找执行 AJAX 调用。如果您使用的是 ASP.NET Web 窗体,则需要使用 UpdatePanelScriptManager 控件来启用部分页面更新。

Take a look at Microsoft's introduction to the UpdatePanel control

如果您使用 MVC 或 SignalR,还有其他方法可以做到这一点,但我假设作为 WinForms 开发人员,您可能会使用 WebForms。

【讨论】:

  • 我已经使用 ScriptManager 安装了一个更新面板。我尝试在线程调用的方法结束时调用 updatePanel.Update() 方法。用户界面上仍然没有任何变化。
  • @RJ130 你能在一些源代码中编辑你原来的问题吗?看看你在做什么将有助于理解为什么它不起作用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-22
  • 2022-01-05
相关资源
最近更新 更多