我有很长时间处理过程(从Db获取数据,如国家列表,业务列表(大约1500行))。所以我创建了一个单独的方法来获取这些数据。
但它是在说
创建模型时无法使用上下文。这个 如果在内部使用上下文,则可能抛出异常 OnModelCreating方法或者如果访问相同的上下文实例 并发多个线程。请注意DbContext的实例成员 和相关的类不保证是线程安全的。
private IList<Business> GetBusiness(IRepositories repos, IImageStore store)
{
var data = repos.BusinessRepo.GetAll();
//Some more calculation on the basis of Data.
return data;
}
**similar function for country**
现在我从主
调用这些方法Task<List<Business>>[] taskBusiness = new Task<List<Business>>[1];
taskBusiness[0] = Task.Run(() => GetBusiness(repos, imageStore));
Task<List<Country>>[] taskCountry = new Task<List<Country>>[1];
taskCountry[0] = Task.Run(() => GetCountry(repos, imageStore));
//Some More calculation
.
.
// before method end
Task.WaitAll(taskBusiness);
Task.WaitAll(taskCountry);
var business = taskBusiness[0].Result;
var country = taskCountry[0].Result;
答案 0 :(得分:1)
DbContext
类不是线程安全的(您的错误消息几乎告诉您),因此您不应该在多个线程中使用相同的实例。相反,您应该为每个同时调用创建一个不同的对象。
来自DbContext
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:android="http://schemas.android.com/apk/res/android">
<style name="AppTheme" parent="@android:style/Theme.Light.NoTitleBar.Fullscreen">
<item name="android:editTextStyle">@style/EditTextAppTheme</item>
<item name="android:buttonStyle">@style/ButtonAppTheme</item>
<item name="android:imageButtonStyle">@style/ImageButtonAppTheme</item>
<item name="android:layout_width">wrap_content</item>
<item name="android:layout_height">wrap_content</item>
</style>
(强调我的):
线程安全:此类型的任何公共静态(在Visual Basic中为Shared)成员都是线程安全的。 不保证所有实例成员都是线程安全的。