【问题标题】:long running process vb.net长时间运行的过程 vb.net
【发布时间】:2011-06-03 21:41:08
【问题描述】:

我有一个服务工单管理应用程序,用户想要在 MDI 框架的选项卡上打开多个工单详细信息。由于此应用程序必须通过 Web XML 服务与其他公司进行通信,因此大约需要 15 ~20 秒。用户最抱怨的是他需要等到保存过程完成。正在保存数据时光标正在工作,其他无法完成。

在从其他窗口保存数据时,让用户打开其他窗口并执行其他操作或保存数据的最有效方法是什么?

顺便说一下,这是 VB.Net / Windows 应用程序。

【问题讨论】:

    标签: windows vb.net


    【解决方案1】:

    您可以使用 BackgroundWorker 或新线程。我个人会尝试使用内置的异步方法,例如 BeginInvoke

    http://www.developer.com/net/vb/article.php/1443981/Asynchronous-Web-Services-for-Visual-Basic-NET.htm

    请记住,异步操作很快就会变得复杂,好的设计非常重要。

    【讨论】:

    • BackgroundWorker 和新线程有什么区别?
    • @Hoorayo:BackgroundWorker 在单独的线程上执行操作。阅读我提供的参考资料...
    • 新线程是 BackgroundWorker 的原始版本。 worker 封装了一个新线程,但提供了简单的方法来启动/停止/取消工作。它还引发事件,以便它可以更轻松地向主线程报告进度。就像我在帖子中所说的那样,尽管已经有了 BeginInvoke 方法,您可以使用它来消除对新线程的需求。
    【解决方案2】:
    【解决方案3】:

    我编写了一个 Web 服务,它是解决方案的一部分,它需要启动并运行一个需要很长时间才能运行的方法。经过一些试验,我认为最简单的方法是在 Web 服务的新线程中启动长时间运行的任务,并将自定义对象返回给调用应用程序(稍后使用)。

    <WebMethod()> Public Function StartChecks() As ResponseItem
    
        Dim t As New Thread(New ThreadStart(AddressOf Me.StartWork))
        t.Start()
    
        Return New ResponseItem(CheckGUID.ToString)
    
    End Function
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-03-30
      • 2011-08-31
      • 2021-06-28
      • 2020-04-16
      • 2018-04-07
      • 2018-09-05
      • 2014-02-11
      相关资源
      最近更新 更多