【问题标题】:vb.net writing background multithreadingvb.net 编写后台多线程
【发布时间】:2011-06-30 10:10:56
【问题描述】:

我的应用程序将从数据库创建一个 Excel,创建一个 excel 文件需要几分钟的时间,直到那时用户不想等待 excel 完成,他应该开始使用该应用程序。完成 Excel 后,应用程序应弹出消息“报告成功”。

谁能告诉我怎么做,后台线程会帮助我吗?

如果是,请给我一些示例,线程新手....

【问题讨论】:

    标签: vb.net multithreading


    【解决方案1】:

    这取决于您在 Excel 创建期间执行的操作。

    创建和控制后台线程的一种非常简单有效的方法是使用 BackgroundWorker。

    easyimplement

    它是thread safe

    您可以找到我准备的一个工作示例 (BackgroundWorkerDoStuff)。

    【讨论】:

    • LeftyX,感谢您的回复。我在 excel 中没有做任何伟大的事情,只是将值从 DB 复制到 excel 单元格和简单的格式。我在这里所做的是, trd = New Thread(AddressOf ExportToExcel) trd.IsBackground =True 'MainForm.Instance.mnuExit.Enabled = False 'MainForm.Instance.ControlBox = False trd.Start 现在新线程 trd 开始作为 excel 工作很好,但我想在 excel 操作完成后杀死线程“trd”并想要访问主表单控件?当我尝试它抛出一个错误消息时,一些'循环线程引用错误'。
    • @user809244:我建议您不要使用它来访问或更改您的 GUI。它不是线程安全的。我会更新我的答案。
    • @LeftyX- 这行得通,但我对进度条有疑问。进度条应根据创建 Excel 所需的时间进行。请告诉我在你的代码中我应该在哪里调用 ExportToExcel() 方法。
    • @user809244:BW_DoWork 是所有事情发生的地方。您的数据集/数据读取器在每一行上循环并填充 Excel 文件。 ReportProgress 只是一种报告进度的工具。我认为最好的方法是计算您正在阐述的行数的百分比。
    • @LeftyX - 谢谢。我使用了 MyWorker.ReportProgress(20) 和 conse: 增加了 % ,并希望它工作正常。感谢您的热心帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-16
    • 1970-01-01
    • 2014-02-26
    • 1970-01-01
    相关资源
    最近更新 更多