我正在制作Windows应用程序。
在我的申请中,工作流程就是这样。
在文本框中输入目标网站网址,然后点击开始按钮。
首先,比较textBox中的网站网址和真实网址网址(如果匹配),开始分析网站并插入数据库,然后在Windows窗体中向Datagridviwe显示数据。
但问题是......当网站信息很大时,有时窗口形式会冻结......但它运作良好......
所以我想添加一个进度条并显示它,使用线程或后台工作程序?
但我从不使用线程或类似的东西......我对此一无所知......
请有人帮助我或提供一些建议......
我的代码就是这样。(简化)
public partial class Site_Statistics : MetroFramework.Forms.MetroForm
{
public Site_Statistics()
{
InitializeComponent();
}
private void Migration_Statistics_Load(object sender, EventArgs e)
{
}
private void mtbtnStart_Click(object sender, EventArgs e)
{
insertWebApplicationInfo();
SelectWebApplicationInfo();
}
private void insertWebApplicationInfo()
{
//Insert to database works here
}
private void SelectWebApplicationInfo()
{
//Select from database works here
}
}
答案 0 :(得分:1)
很难为你做出决定,你应该如何解决这个问题。如果您使用的是.NET 4.5,则可以查看async
和await
个关键字。视频教程:
如果你被锁定"到.NET 3.5或只是想了解Backgroundworker
这是一个很好的机会,因为它是为此而构建的场景。在后台线程上工作然后更新UI可能很麻烦,使用Backgroundworker
的优点是在UI线程上引发了事件(ProgressChanged,RunworkerCompleted),因此这将为您解决。最后,如果您选择Backgroundworker
:
backgroundworker
WorkerReportsProgress
属性并报告doWork
活动中的进度WorkerSupportsCancellation
属性并在doWork
事件中处理取消有关backgroundworker
的更多信息,如果您使用谷歌搜索,有很多好文章:)
This msdn页面包含了您可能需要的所有背景工作者信息,包括示例。