.Net 3.5 アプリケーションで DataTable を使用して、ファイル名を含むいくつかのレコードを含む 1 つの列を格納しています。
DataTable を初期化する方法と場所に関するコードを次に示します。
public partial class MainForm : Form
{
DataTable memTable_CurrentTransfers = new DataTable();
private void MainForm_Load(object sender, EventArgs e)
{
memTable_CurrentTransfers.Columns.Add("fileName", typeof (string));
アプリケーションの別のメソッドでファイル名を DataTable に追加する方法は次のとおりです。
memTable_CurrentTransfers.Rows.Add(fileName);
30 分ごとに、次のコードを実行するスレッドを起動します。
public void CheckUploads()
{
DataView view2 = memTable_CurrentTransfers.DefaultView;
for (int i = 0; i < view2.Count; i++)
{
string tmpString = view2[i][0].ToString();
すべてがうまく機能しますが、アプリケーションをしばらく実行した後、ユーザーは CheckUploads() メソッドでこのエラーを受け取り始めています
指定されたキーはディクショナリに存在しませんでした。System.ThrowHelper.ThrowKeyNotFoundException() で System.Collections.Generic.Dictionary`2.get_Item(TKey キー) で System.Data.DataView.get_Item(Int32 recordIndex) で
私の列が DataTable から消えていると思います。
なぜこれが起こっているのか、どうすればこれを防ぐことができるのか教えてください。アプリケーション内のすべてのメソッドから使用できるように、DataTable を初期化する別の方法はありますか?