我從SQLite
數據庫加載列表時,我的頁面加載,有時在加載時我得到NullReferenceException
與錯誤說Object reference not set to an instance of an object.
的NullReferenceException當頁面加載
它打破這個代碼在SQLite的類文件
public TableMapping GetMapping (Type type)
{
if (_mappings == null) {
_mappings = new Dictionary<string, TableMapping>();
}
TableMapping map;
if (!_mappings.TryGetValue (type.FullName, out map)) {
map = new TableMapping (type);
_mappings [type.FullName] = map; //null here
}
return map;
}
這是我做的,當我的頁面加載
public MainPage()
{
this.InitializeComponent();
Loaded += MainPage_Loaded;
}
void MainPage_Loaded(object sender, RoutedEventArgs e)
{
createDatabase();
getBowlers();
}
private async void createDatabase()
{
SQLiteAsyncConnection conn = new SQLiteAsyncConnection(BOWLERS_DATABASE);
await conn.CreateTableAsync<Bowler>();
conn = new SQLiteAsyncConnection(GAMES_DATABASE);
await conn.CreateTableAsync<Games>();
}
private async void getBowlers()
{
SQLiteAsyncConnection conn = new SQLiteAsyncConnection(BOWLERS_DATABASE);
var query = conn.Table<Bowler>();
itemListView.DataContext = await query.ToListAsync();
}
我是新來的頁面生命週期,但它似乎我試圖從數據庫中儘早提取數據?
編輯
堆棧跟蹤
System.NullReferenceException was unhandled by user code
HResult=-2147467261
Message=Object reference not set to an instance of an object.
Source=mscorlib
StackTrace:
at System.Collections.Generic.Dictionary`2.Insert(TKey key, TValue value, Boolean add)
at System.Collections.Generic.Dictionary`2.set_Item(TKey key, TValue value)
at SQLite.SQLiteConnection.GetMapping(Type type) in c:\Users\Jeff\Dropbox\Tournament Director Windows\Tournament Director Windows\SQLite.cs:line 231
at SQLite.TableQuery`1..ctor(SQLiteConnection conn) in c:\Users\Jeff\Dropbox\Tournament Director Windows\Tournament Director Windows\SQLite.cs:line 2129
at SQLite.SQLiteConnection.Table[T]() in c:\Users\Jeff\Dropbox\Tournament Director Windows\Tournament Director Windows\SQLite.cs:line 616
at SQLite.SQLiteAsyncConnection.Table[T]() in c:\Users\Jeff\Dropbox\Tournament Director Windows\Tournament Director Windows\SQLiteAsync.cs:line 260
at Tournament_Director_Windows.MainPage.<getBowlers>d__c.MoveNext() in c:\Users\Jeff\Dropbox\Tournament Director Windows\Tournament Director Windows\MainPage.xaml.cs:line 116
InnerException:
哪一行,你才能上的NullReferenceException? –
我在代碼中註釋了它_mappings [type.FullName] = map;' – tyczj
是'_mappings'靜態變量和/或被從多個線程調用? –