【发布时间】:2017-12-13 00:57:10
【问题描述】:
我正在尝试使用Backgroundworker 来保持我的主 UI 线程打开而不是冻结。我正在单步执行我的代码,并在backgroundWorker1.RunWorkerAsync(); 上设置了一个断点,它一旦命中就离开了方法,并且在foreach 行上设置了一个断点 -> 永远不会被命中。
使用 Backgroundworker 的正确方法是什么?
public Form1()
{
InitializeComponent();
backgroundWorker1.WorkerReportsProgress = true;
backgroundWorker1.WorkerSupportsCancellation = true;
}
private void btnQuery_Click(object sender, EventArgs e)
{
grid1.Rows.Clear();
backgroundWorker1.RunWorkerAsync();
}
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
foreach (string name in studentRoster)
{
InsertIntoDB();
}
}
【问题讨论】:
-
检查您的后台工作人员是否忙。如果它已经在运行,它将不会再次运行。
if (!backgroundWorker1.IsBusy) { backgroundWorker1.RunWorkerAsync(); } -
不忙。我用你的语法验证了:)
-
确保
backgroundWorker1 += backgroundWorker1_DoWork存在。也许它在 Form1.designer.cs 中?
标签: c# asynchronous backgroundworker