0
これまでに辞書(Dictionary)をConcurrentDictionaryに変更して修正しました。 しかし、私が物事を変えたとき(辞書は同じままです)、物事は間違っていました。これは、リストがこのメソッドからであるnullであると言う http://pasted.co/fd94e190TryAdd()のときにConcurrentDictionaryがNullReferenceExceptionをスローします。
:
は、ここに私の完全なコードです。
Models.GridData getCurrentGrid()
{
Models.GridData data = new Models.GridData();
for (int i = 0; i < metroGrid1.Rows.Count; i++)
{
foreach (var item in metroGrid1.Rows[i].Cells)
{
if (item is DataGridViewCell)
{
Models.CellData cellData = new Models.CellData();
DataGridViewCell cell = item as DataGridViewCell;
cellData.column = cell.ColumnIndex;
cellData.row = cell.RowIndex;
if (string.IsNullOrEmpty((string)cell.Value) && string.IsNullOrWhiteSpace((string)cell.Value))
{
cellData.value = string.Empty;
}
else {
cellData.value = cell.Value;
}
//Occurs here right now
data.List.TryAdd(cellData.column.ToString() + " " + cellData.row.ToString(),cellData);
}
}
}
return data;
}
void Save()
{
Models.GridData data = new Models.GridData();
data = getCurrentGrid();
unsavedChanges = false;
StreamWriter writer = new StreamWriter(path);
writer.AutoFlush = true;
writer.Write(JsonConvert.SerializeObject(data.List));
writer.Close();
MetroFramework.MetroMessageBox.Show(this, "Başarıyla kaydedildi", "Yoklama Listesi-Talha Açıkgöz", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1);
}
EDIT:Models.cs = http://pasted.co/13a7cb1c私は、あなたのすべてに感謝することを固定
を追加し、[MCVE]でこれを再現してみてください。多くの場合、実際のコードを最小限の例に減らすプロセスによって、問題が明らかになります。 –
@JonSkeetありがとうございます、私はそれを試しますが、今は非常に限られた時間を持っています:\ –
'Save'メソッドで' data.List'の初期化が表示されません。 – kiziu