確定這裏是美麗的光代碼:背景工人掛起整個應用程序
//
// 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
也沒有任何成功的東西。
您是否有任何控件綁定到表適配器?一個簡短的*完整的*例子真的可以幫助這裏... –
是的,我有一個網格綁定到DSNumConfigs – kseen
在我的網站上有一篇關於在Windows窗體上運行後臺線程的文章...它可能對你有一些幫助儘管它不使用後臺工作人員。無論如何...希望這提供了一些你可以嘗試... http://www.idevforfun.com/index.php/2010/01/10/windows-ui-threading/ – iDevForFun