Хорошо, вот довольно светлый код:
//
// numConfigsBindingSource
//
this.numConfigsBindingSource.DataMember = "NumConfigs";
this.numConfigsBindingSource.DataSource = this.DSNumConfigs;
// Grid
this.GridNumConfigs.DataSource = this.numConfigsBindingSource;
//
// DSNumConfigs
//
this.DSNumConfigs.DataSetName = "DSNumConfigs";
this.DSNumConfigs.SchemaSerializationMode = System.Data.SchemaSerializationMode.IncludeSchema;
//
// numConfigsTableAdapter
//
this.numConfigsTableAdapter.ClearBeforeFill = false;
//
//
// DSConfigNumbers
//
this.DSConfigNumbers.DataSetName = "DSConfigNumbers";
this.DSConfigNumbers.EnforceConstraints = false;
this.DSConfigNumbers.SchemaSerializationMode = System.Data.SchemaSerializationMode.IncludeSchema;
private void Form1_Load(object sender, EventArgs e)
{
worker.RunWorkerAsync();
}
private void worker_DoWork(object sender, DoWorkEventArgs e)
{
this.numConfigsTableAdapter.Fill(this.DSNumConfigs.NumConfigs);
}
Затем я запускаю этот код под VS2010, он работает и находит, но когда я просто запускаю релиз-приложение, оно зависает. Но если я переписываю этот код, который не использует BackgroundWorkers
, он работает нормально.
Нужно ли мне приложить некоторые усилия, чтобы четко выпустить фонового работника? Я попытался заблокировать рабочий класс в Form1_Load
, он не дает никакого успеха. Также пытались заблокировать this.DSNumConfigs
в DoWork
, а также никаких успешных вещей.