2

バックグラウンド スレッドで System.Data.DataTable を更新したいと思います。

m_MyThread = new Thread(UpdateIt) { 
                 isBackground = true, 
                 Priority = ThreadPriority.Normal };

public void UpdateIt()
{
    var adapter = new DataSetAdapter();
    adapter.Fill(MyDataTable);
    adapter.Dispose();

    m_MyThread = null;
}

ただし、問題があります。このDataSet内のデータテーブル(MyOtherDataTable.DefaultView)のDataViewにバインドされたコントロール(リストボックスなど)を含むUserControlsのスタック内にUserControl(ビュー)が開いています(私が試しているMyDataTableにもバインドされていません)埋める)。

その結果、別のコントロールを作成/BringToFront しようとすると、mscore.dll は恐ろしい死に方をします。cedevice.log と kdmp ファイルをスローします (Watson で分析しようとしました)。

これを回避する方法があるかどうか疑問に思っています。Form.Timer() でこの操作を実行しようとしましたが、結果は同じです。

「Fill」がフォアグラウンド スレッド内で実行されると、すべてが完全に機能します。

洞察を事前にありがとう....

4

0 に答える 0