public async Task PushAsync(List <string> texts, CancellationToken token = default) { using (var releaser = await _databaseLimit.EnterAsync()) { using (var context = new QueueContext(_databaseFileName)) { foreach (string text in texts) { context.Items.AddRange(BuildItem(text)); } await context.SaveChangesAsync(token).ConfigureAwait(false); } } }
public async Task PushAsync(List <byte[]> contents, CancellationToken token = default) { using (var releaser = await _databaseLimit.EnterAsync()) { using (var context = new QueueContext(_databaseFileName)) { foreach (var content in contents) { // 注意,这里每次 Add() 以后都要及时 SaveChanges()。否则 ID 的顺序会发生混乱 var items = BuildItem(content); foreach (var item in items) { context.Items.Add(item); await context.SaveChangesAsync(token); } } } } }